【问题标题】:sorting a dictionary first by values and then by keys [duplicate]首先按值排序字典,然后按键[重复]
【发布时间】:2020-09-30 10:40:46
【问题描述】:

我在 python 中有一个带有字符串键和整数值的字典。我想按值排序,如果两个值相同,则按键对字典进行排序。 字典的一个例子。是:

{'Spain':3,'Morocco':1,'England':3,'canada':2}

排序后应该是:

{'England':3,'Spain':3,'canada':2,'Morocco':1}

【问题讨论】:

  • 到目前为止你做了什么?
  • d={'Spain':3,'Morocco':1,'England':3,'canada':2} dic=OrderedDict(sorted(d.items(),key=lambda x: x[::-1],reverse=True)) 但我们需要按键按字母顺序排列!
  • edit那个问题

标签: python


【解决方案1】:

您可以尝试下面的方法,它按项对字典进行排序。
-item[1] 按值降序排序,而item[0] 按键升序排序。 因为 sorted 的结果是一个元组列表,我们需要使用 dict() 构造函数调用将其转换为字典。

d = {'Spain': 3, 'Morocco': 1, 'England': 3, 'canada': 2}
out = dict(sorted(d.items(), key=lambda item: (-item[1], item[0])))
print(out)

输出:

{'England': 3, 'Spain': 3, 'canada': 2, 'Morocco': 1}

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 2020-09-14
    • 2023-03-04
    • 2011-12-06
    • 2016-11-03
    • 2019-06-26
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多