Python - 比较字典中的键元素并返回其中一个键

时间:2017-04-06 03:27:50

标签: python dictionary key max min

我正在尝试比较字典中键中的元素。我想首先比较键的所有第一个元素,然后如果有多个具有最高值,则比较这些键中的第二个元素。

例如:

>>> my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 77]}

1)搜索第一个元素以获得最高价值。结果应该是:

('111', '122')

2)搜索' 111'的第二个元素。和' 112'为了最低价值。结果应该是:

('111')

我找到了this讨论,找到了具有最大值的密钥。返回具有相同max的多个键的一种解决方案是:

>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000}
>>> [key for key,val in stats.iteritems() if val == max(stats.values())]
['b', 'd']

这里的问题是这些键只有一个元素。我需要弄清楚如何为具有多个元素的键做到这一点。

我想我可以像这样返回每个键的第一个元素:

>>> [item[0] for item in my_dict.values()]
['50', '50', '40', '20']

但是我如何比较它们呢?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用你的dict示例,我觉得以下内容适合你的定义

>>> stats = {'a':[1,2,3], 'b':[2,8,9], 'c': [3,4,5], 'd':[5,6,8]}
>>> [key for key,val in stats.items() if sum(val) == max([sum(i) for i in stats.values()])]
['b', 'd']

然后进行比较或任何比较。 但是,我不建议使用dict进行这些比较,因为dicts本质上是无序的。如果可能的话,我会建议使用或排序(列表,键)方法来生成有序列表以进行比较。