【问题标题】:How to sort a dictionary having string as keys and integer as values in Python如何在Python中对具有字符串作为键和整数作为值的字典进行排序
【发布时间】:2020-11-16 02:03:57
【问题描述】:

我正在尝试对字典进行排序:

dic = {"monday": 1, "tuesday": 1, "wednesday": 10, "thursday": 5, "friday": 10, "saturday": 11, "sunday": 11}

我正在努力:

dic = {"saturday": 11, "sunday": 11, "friday": 10, "wednesday": 10, "thursday": 5, "monday": 1, "tuesday": 1}

所以我尝试了这个:

sortedPairs = sorted(dic.items(), key=lambda x: (x[1],x[0]), reverse=True)

它似乎正在工作,但由于某些原因,它永远不会对最后两个进行排序,我一直有这个:

{"saturday": 11, "sunday": 11, "friday": 10, "wednesday": 10, "thursday": 5, "tuesday": 1, "monday": 1}

如果有人可以帮助我,那就太棒了!

【问题讨论】:

    标签: python sorting dictionary key-value


    【解决方案1】:

    您需要在当天翻转排序顺序。由于您不能使用- 来比较字符串,您应该删除reverse=True 并添加-x[1]

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

    现在是

    [('saturday', 11), ('sunday', 11), ('friday', 10), ('wednesday', 10), ('thursday', 5),
     ('monday', 1), ('tuesday', 1)]
    

    如果你想要一个 dict 返回使用 dict,但它只会在 Python >= 3.7 上保持排序。

    print(dict(sortedPairs))
    # {'saturday': 11, 'sunday': 11, 'friday': 10, 'wednesday': 10, 'thursday': 5, 
    #  'monday': 1, 'tuesday': 1}
    

    【讨论】:

      【解决方案2】:

      关闭。你可以试试key=lambda x: (-x[1], x[0]) 没有reverse=True。需要注意的是,一个元素按升序排序,而另一个按降序排序(后者在元组排序中优先)。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 1970-01-01
        • 2021-10-13
        • 2016-04-13
        • 1970-01-01
        • 2016-03-24
        • 2015-05-14
        • 2019-11-03
        • 2015-12-12
        相关资源
        最近更新 更多