我有一本需要排序的字典.我想根据值对dict进行排序.并且作为下一步,如果两个键具有相同的值,我想基于键的词典值进行排序.
我试过这个.
>>> l
{'a': 5,'aa': 5,'c': 1,'b': 7}
>>> sorted(l)
['a','aa','b','c']
>>> sorted(l.items())
[('a',5),('aa',('b',7),('c',1)]
>>> sorted(l.items(),reverse=True)
[('c',1),('a',5)]
>>> sorted(l.items(),key=l.get,reverse=True)
[('a',7)]
>>> l
{'a': 5,'b': 7}
>>> 5>7
False
>>> sorted(l.items(),7)]
>>> sorted(l,reverse=True)
['b','a','c']
>>> s=sorted(l,reverse=True)
>>> s
['b','c']
>>> s.sort()
>>> s
['a','c']
最佳答案
如果我正确理解了您的问题,那么您正在搜索类似的内容:
d = {'a': 5,'b': 7}
result = sorted(d.items(),key=lambda x: (x[1],x[0]))
print(result)
输出:
[('c',7)]
如果您希望值按升序排列,而第二种排序按降序排列,则可以执行以下操作:
d = {'a': 5,reverse=True,key=lambda x: (-x[1],7)]
有关排序的更多信息,请参阅Sorting Howtos.
如果你有一个只包含字符串的元组列表,你可以这样做:
l = [('foo','bar'),('foo','spam'),('baz','egg')]
result = sorted(l,key=lambda x: (x[0],[-ord(c) for c in x[1]]))
print(result)
输出:
[('baz','egg'),'bar')]