打印密钥以获得最大数据集

时间:2018-05-15 04:43:56

标签: python

目前我的数据集是:

{('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)

但是,我不确定如何找到最大值然后提取这些数据点。

3 个答案:

答案 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