如何从含元组键的Python字典中提取最大值对应键并拆分输出
解决方法:找出字典中值最大的键并提取州和月份
嘿,这事儿其实很简单,Python的内置函数就能帮你轻松搞定!咱们一步步来:
步骤1:找到值最大的键值对
你可以用max()函数,配合字典的items()方法获取所有键值对,然后指定按值来排序找最大值:
# 你的数据集 rainfall_and_month = {('NSW', '06'): 0.4, ('QLD', '06'): 0.2, ('VIC', '06'): 0.0, ('NSW', '07'): 0.2, ('QLD', '07'): 0.4, ('VIC', '07'): 0.0, ('NSW', '08'): 0.2, ('QLD', '08'): 0.2, ('VIC', '08'): 0.0, ('NSW', '09'): 0.2, ('QLD', '09'): 0.2, ('VIC', '09'): 0.0, ('NSW', '10'): 0.2, ('QLD', '10'): 0.2, ('VIC', '10'): 0.0, ('NSW', '11'): 0.2, ('QLD', '11'): 0.6, ('VIC', '11'): 0.0} # 找出值最大的键值对 max_pair = max(rainfall_and_month.items(), key=lambda x: x[1])
这里的lambda x: x[1]告诉max()函数:比较每个键值对的第二个元素(也就是值),找出最大的那一组。
步骤2:提取州和月份
max_pair是一个类似(('QLD', '11'), 0.6)的元组,我们可以直接解构里面的键(也就是州和月份的元组):
# 解构键,得到州和月份 (state, month) = max_pair[0]
或者更简洁的写法(如果不需要最大值可以忽略max_value):
(state, month), max_value = max_pair
步骤3:按要求输出
最后就可以用你想要的格式打印了:
print("A-value:", state) print("B-value:", month)
完整示例代码
把所有步骤合起来,就是这样:
rainfall_and_month = {('NSW', '06'): 0.4, ('QLD', '06'): 0.2, ('VIC', '06'): 0.0, ('NSW', '07'): 0.2, ('QLD', '07'): 0.4, ('VIC', '07'): 0.0, ('NSW', '08'): 0.2, ('QLD', '08'): 0.2, ('VIC', '08'): 0.0, ('NSW', '09'): 0.2, ('QLD', '09'): 0.2, ('VIC', '09'): 0.0, ('NSW', '10'): 0.2, ('QLD', '10'): 0.2, ('VIC', '10'): 0.0, ('NSW', '11'): 0.2, ('QLD', '11'): 0.6, ('VIC', '11'): 0.0} # 找出最大值对应的键值对 max_pair = max(rainfall_and_month.items(), key=lambda x: x[1]) # 提取州和月份 state, month = max_pair[0] # 输出 print("A-value:", state) print("B-value:", month)
运行这段代码,就会得到你想要的结果:
A-value: QLD B-value: 11
另外,顺便提一句:你生成字典的代码可以简化一下,不用分开判断键是否存在,直接用dict.get()方法就能一行搞定:
key = (state, month) rainfall_and_month[key] = min(rainfall, rainfall_and_month.get(key, float('inf')))
get(key, float('inf'))的意思是:如果键不存在,就返回无穷大,这样min(rainfall, 无穷大)就会直接取rainfall,和你原来的逻辑完全一致,代码更简洁~
内容的提问来源于stack exchange,提问作者P. Parker
相关产品推荐
相关产品推荐

