Python中如何通过字典的值获取对应键及最大值对应的键
实现方法
你原有代码只遍历了字典的值,无法关联到对应的键,修改为遍历键值对,比较值的大小时同步记录对应键即可。
方案1:修改现有遍历逻辑
保留你原有计数、统计总市值的逻辑,调整遍历方式即可:
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" } # 先初始化所有需要用到的变量,避免运行报错 count = 0 total_mkt_cap = 0.0 largest_value = 0.0 largest = "" # 遍历键值对,同时拿到银行名称和对应市值 for bank_name, value_str in banks.items(): count += 1 current_value = float(value_str) total_mkt_cap += current_value # 你原代码里的total =+ count是错误写法,若需要累计总数直接使用count变量即可 if current_value > largest_value: largest_value = current_value # 符合条件时存储对应的键,也就是银行名称 largest = bank_name
运行完成后largest变量的内容就是"National Bank of Canada"。
方案2:使用内置max函数(无需手动遍历)
如果你不需要统计总数、总市值,仅需要获取最大市值对应的键,可以直接用Python内置的max()函数实现,代码更简洁:
# 按照每个键对应的值(转浮点数)比较大小,返回值最大的键 largest = max(banks.keys(), key=lambda bank_name: float(banks[bank_name]))
也可以直接遍历键值对实现,逻辑更直观:
largest = max(banks.items(), key=lambda item: float(item[1]))[0]
内容的提问来源于stack exchange,提问作者Tom Weekes
相关产品推荐
相关产品推荐

