8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

按多个值对字典进行排序

GoTouchGrass 1月前

37 0

我有一本字典 {'Bill': 4, 'Alex' : 4, 'Bob' : 3, \'Charles\': 7}我需要先按数字顺序对这本字典进行排序,然后按字母顺序进行排序。如果 2 个项目具有相同的数字键,则它们...

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

我需要先按数字顺序对这个字典进行排序,然后按字母顺序对字典进行排序。如果两个条目有相同的数字键,则需要按字母顺序对它们进行排序。

输出应该是 Bob, Alex, Bill, Charles

我尝试使用 lambda、列表推导等,但似乎无法让它们正确排序。

帖子版权声明 1、本帖标题:按多个值对字典进行排序
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由GoTouchGrass在本站《dictionary》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 使用 对字典的项目(元组)进行排序 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']
    
  • Rmin 1月前 0 只看Ta
    引用 3

    @AlexStewart,你也可以反过来想。保持连续值为正,然后将 reverse=True 放入 sorted 方法中。sorted(d, key=lambda k: (k[1], k[0]), reverse=True)

  • @AlexStewart,对于数值,您可以使用负数 (-) 来控制降序。对于非数值,您应该定义子类并定义 __lt__。

  • 使用 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']
    
返回
作者最近主题: