目前我的数据集是:
{('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}
我通过以下方式实现了这一目标:
key = (state,month)
if key not in rainfall_and_month:
rainfall_and_month[key] = rainfall
if key in rainfall_and_month:
rainfall_and_month[key] = min(rainfall, rainfall_and_month[key])
我希望打印出键值对中的最大值。所以基本上我想让代码找到"(' QLD',' 11'):0.6",然后打印出来,
A-value: QLD
B-value: 11
分开,所以我可能最终会做
print("A-value:", state)
print("B-value:", month)
但是,我不确定如何找到最大值然后提取这些数据点。
答案 0 :(得分:0)
在Python 3中,字典有一个名为.items()
的方法,它将字典项的生成器作为元组元组返回。 Python 2等价物是.iteritems()
。在您的情况下,如果dict名为data_dict
dict_items = data_dict.items()
Python中的max
函数允许您输入lambda函数,该函数基本上告诉它要比较的值。
max_item_tuple = max(dict_items, key=lambda currentTuple: currentTuple[1])
现在,您的max_item_tuple
包含您需要从dict中获取的键值对的元组。
例如,如果我有{"something": 1, "nothing": 4, "everything": 3}
的字典,我的max_item_tuple
将成为("nothing", 4)
。
答案 1 :(得分:0)
这是lambda
的替代方案:
>>> max_pair = max(data.items(), key=operator.itemgetter(1))
('QLD', '11')
>>> max_pair[0]
'QLD'
>>> max_pair[1]
'11'
答案 2 :(得分:0)
使用max
查找最大值。它需要一个关键字参数key
,可以根据您需要找到的最大值来为其分配值。
考虑使用operator
模块。 operator.itemgetter(1)
在每次迭代中获取每个键的值。
import operator
s = {('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}
result = max(s.items(), key=operator.itemgetter(1))
A_value = result[0][0] # QLD
B_value = result[0][1] # 11