如何在Python中对以字符串为键和整数作为值的字典进行排序

时间:2020-07-26 17:33:18

标签: python sorting dictionary key-value

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

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)

它似乎正在工作,但是由于某些原因,它从不对两个last牙进行排序,而我一直这样:

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

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

2 个答案:

答案 0 :(得分: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,但仅在Python> = 3.7上进行排序。

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

答案 1 :(得分:1)

关闭。您可以尝试不使用key=lambda x: (-x[1], x[0])的{​​{1}}。需要注意的重要一点是,一个元素以升序排序,而另一个则以降序排序(后者在元组排序中优先)。

相关问题