如何通过 Python 中的值访问键?
How to access a key through its value in Python?
banks = {
"National Bank of Canada" : "327",
"Toronto-Dominion Bank" : "302",
"Royal Bank of Canada" : "173",
"Wells Fargo" : "273",
"Goldman Sachs" : "87",
"Morgan Stanley" : "72",
"Canadian Imperial Bank of Commerce" : "83",
"TD Bank" : "108",
"Bank of Montreal" : "67",
"Capital One" : "47",
"FNB Corporation" : "4",
"Laurentian Bank of Canada" : "3",
"Ally Financial" : "12",
"Montreal Trust Company" : "145",
"Canadian Western Bank" : ".97"
}
for value in banks.values():
count += 1
total_mkt_cap += float(value)
total =+ count
if float(value) > float(largest):
largest = value
变量 largest
现在是值 327
,但我希望 largest
成为 "National Bank of Canada"
的键,而不是值,任何帮助表示赞赏, 谢谢
考虑到largest
包含最大值,可以通过遍历字典(key, value)
:
找到与其关联的键
for key, value in banks.items():
if value == largest:
desired_key = key
break
print(desired_key)
请记住,它将为您提供与该值关联的第一个键。
备选方案
或者,您可以使用以下使用 operator.itemgetter
和 ast.literal_eval
的逻辑:
import operator
import ast
banks = {key: ast.literal_eval(value) for key, value in banks.items()}
print(max(banks.items(), key=operator.itemgetter(1))[0])
前面的代码将在转换为 int 或 float 后为您提供最大值的键。
我会试试下面的内容。
banks = {
"National Bank of Canada" : "327",
"Toronto-Dominion Bank" : "302",
}
#don't worry about this line. It just gets the largest value.
largest = str(max(map(int,banks.values())))
for bankName,id in banks.items(): # for name, age in dictionary.iteritems(): (for Python 2.x)
if id == largest:
largest = bankName
print(largest)
输出
National Bank of Canada
banks = {
"National Bank of Canada" : "327",
"Toronto-Dominion Bank" : "302",
"Royal Bank of Canada" : "173",
"Wells Fargo" : "273",
"Goldman Sachs" : "87",
"Morgan Stanley" : "72",
"Canadian Imperial Bank of Commerce" : "83",
"TD Bank" : "108",
"Bank of Montreal" : "67",
"Capital One" : "47",
"FNB Corporation" : "4",
"Laurentian Bank of Canada" : "3",
"Ally Financial" : "12",
"Montreal Trust Company" : "145",
"Canadian Western Bank" : ".97"
}
for value in banks.values():
count += 1
total_mkt_cap += float(value)
total =+ count
if float(value) > float(largest):
largest = value
变量 largest
现在是值 327
,但我希望 largest
成为 "National Bank of Canada"
的键,而不是值,任何帮助表示赞赏, 谢谢
考虑到largest
包含最大值,可以通过遍历字典(key, value)
:
for key, value in banks.items():
if value == largest:
desired_key = key
break
print(desired_key)
请记住,它将为您提供与该值关联的第一个键。
备选方案
或者,您可以使用以下使用 operator.itemgetter
和 ast.literal_eval
的逻辑:
import operator
import ast
banks = {key: ast.literal_eval(value) for key, value in banks.items()}
print(max(banks.items(), key=operator.itemgetter(1))[0])
前面的代码将在转换为 int 或 float 后为您提供最大值的键。
我会试试下面的内容。
banks = {
"National Bank of Canada" : "327",
"Toronto-Dominion Bank" : "302",
}
#don't worry about this line. It just gets the largest value.
largest = str(max(map(int,banks.values())))
for bankName,id in banks.items(): # for name, age in dictionary.iteritems(): (for Python 2.x)
if id == largest:
largest = bankName
print(largest)
输出
National Bank of Canada