考虑以下字典...
d = {'ab': 3, 'aa': 3, 'b': 4, 'c': 2, 'a': 1}
>>>sorted(d, key=d.get, reverse=True)[:2]
['b', 'ab']
使用sorted,目标是产生与两个最高值关联的键。这是我遇到的麻烦:绑定两个值时,应选择按字母顺序第一个出现的键。因此,在这种情况下,我实际上要返回的是['b','aa'],因为'aa'和'ab'的值均为3。如果有帮助,字典的值也将始终为正。
怎么样:
>>> d = {'ab': 3, 'aa': 3, 'b': 4, 'c': 2, 'a': 1}
>>> sorted(d, key=lambda x: (-d[x], x))
['b', 'aa', 'ab', 'c', 'a']
>>> sorted(d, key=lambda x: (-d[x], x))[:2]
['b', 'aa']
要么
>>> sorted(d, key=lambda x: (-d[x], x.lower()))[:2]
['b', 'aa']
取决于您对案件的关心程度。
您还可以利用排序稳定的事实,并分两步进行:
>>> sorted(sorted(d), key=d.get, reverse=True)
['b', 'aa', 'ab', 'c', 'a']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句