【问题标题】:Python 3 sort settingsPython 3 排序设置
【发布时间】:2015-02-20 12:24:34
【问题描述】:

我有一本存储单词及其频率的字典。我需要从此字典中获取排序列表。单词应按文本中出现次数的降序排列,并以相同的出现频率 - 按字典顺序排列。我使用此代码:

for items, quantity in sorted(D.items(), key=itemgetter(1,0), reverse=True):
    print(items, quantity)

产生这个输出:

damme 4
van 3
name 3
is 3
my 2
hi 2
claude 2
bond 2
your 1
what 1
jean 1
james 1

单词按文本中出现次数的降序正确排序,但出现次数相同的单词按相反的字典顺序排序。我该如何解决这个问题?

【问题讨论】:

    标签: python sorting python-3.x dictionary


    【解决方案1】:

    而不是使用reverse=True,返回负数个数字:

    sorted(D.items(), key=lambda i: (-i[1], i[0]))
    

    因为-4 排在-3 之前。对于关系,然后使用键的正向字典排序。

    演示:

    >>> D = {'hi': 2, 'jean': 1, 'bond': 2, 'my': 2, 'what': 1, 'damme': 4, 'van': 3, 'claude': 2, 'name': 3, 'james': 1, 'your': 1, 'is': 3}
    >>> for item, quantity in sorted(D.items(), key=lambda i: (-i[1], i[0])):
    ...     print(item, quantity)
    ... 
    damme 4
    is 3
    name 3
    van 3
    bond 2
    claude 2
    hi 2
    my 2
    james 1
    jean 1
    what 1
    your 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 2021-03-16
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多