python-3.x 如何使用关键字作为决胜点按值对字典进行排序?

2ul0zpep  于 2023-05-30  发布在  Python
关注(0)|答案(3)|浏览(157)

例如,如果我排序:

{3:4, 4:5, 5:5, 7:2}

我希望:

{7:2, 3:4, 4:5, 5:5}

注意:这不是其他“如何对字典排序”问题的重复,因为它们没有显示如何使用关键字作为决胜局。
相关内容:
How do I sort a dictionary by value?
Python 3 list sorting with a tie-breaker

qncylg1j

qncylg1j1#

可以对d.items()进行排序。因为它是键值元组,所以第二个元素是值,第一个元素是键。

out = dict(sorted(d.items(), key=lambda x: (x[1], x[0])))

输出:

{7: 2, 3: 4, 4: 5, 5: 5}
ssm49v7z

ssm49v7z2#

如果键已经按顺序排列,你可以利用Python的排序是稳定的这一事实(保持相同值排序键的原始顺序):

{k:d[k] for k in sorted(d,key=d.get)}

{7: 2, 3: 4, 4: 5, 5: 5}
w80xi6nr

w80xi6nr3#

如果你想先按值排序dict,然后再按键排序,那么可以使用下面的代码:
这里key = lambda由**dict value =(x[1])dict key =(x[0])**组成

d= {3:4, 4:5, 5:5, 7:2}    # or any other dict

sorted(d.items() , key=lambda x: [x[1],x[0]])

o/p : [(7, 2), (3, 4), (4, 5), (5, 5)]

因此,您可以根据需要更改序列,例如,如果您想先按键排序,然后按值排序,则使用此:

sorted(d.items() , key=lambda x: [x[0],x[1]])

如果你想对值进行反向排序,然后按键排序,那么使用这个:

sorted(d.items() , key=lambda x: [-x[1],-x[0]])

如果你想反转任何一个值或键,那么相应地使用负号
最后一件事是[]或()在lambda函数中都能正常工作

sorted(d.items() , key=lambda x: (x[1],x[0]))

sorted(d.items() , key=lambda x: [x[1],x[0]])

相关问题