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的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...