当前位置:  开发笔记 > 编程语言 > 正文

按多个值排序字典

如何解决《按多个值排序字典》经验,为你挑选了2个好方法。

我有字典 {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}

我需要先按字母顺序排序这个词典,然后按字母顺序排序.如果2个项目具有相同的数字键,则需要按字母顺序排序.

这个的输出应该是 Bob, Alex, Bill, Charles

我尝试使用lambda,list comprehension等,但我似乎无法让它们正确排序.



1> falsetru..:

使用sorted键功能(d[k]首先按值(),然后按键排序k):

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}    
>>> sorted(d, key=lambda k: (d[k], k))
['Bob', 'Alex', 'Bill', 'Charles']


@AlexStewart,对于数值,您可以使用负号(`-`)进行降序控制。对于非数字值,您应该使用定义了“ __lt__”的子类来定义。

2> mhawke..:

使用在字典的项目(它们是元组)上排序sorted().您可以通过字典的值指定排序键,然后指定其键:

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}
>>> sorted(d.items(), key=lambda x:(x[1],x[0]))
[('Bob', 3), ('Alex', 4), ('Bill', 4), ('Charles', 7)]
>>> [t[0] for t in sorted(d.items(), key=lambda x:(x[1],x[0]))]
['Bob', 'Alex', 'Bill', 'Charles']

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有