我正在尝试比较字典中键中的元素。我想首先比较键的所有第一个元素,然后如果有多个具有最高值,则比较这些键中的第二个元素。
例如:
>>> 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']
但是我如何比较它们呢?在此先感谢您的帮助!
答案 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本质上是无序的。如果可能的话,我会建议使用或排序(列表,键)方法来生成有序列表以进行比较。