python – 基于第一列然后下一列进行排序

前端之家收集整理的这篇文章主要介绍了python – 基于第一列然后下一列进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一本需要排序的字典.我想根据值对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')]

猜你在找的Python相关文章