如何对 Python 中以字符串为键、以整数为值的字典进行排序
How to sort a dictionary having string as keys and integer as values in Python
我正在尝试对字典进行排序,例如:
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}
如果有人可以帮助我,那就太棒了!
您需要翻转当天的排序顺序。由于您不能使用 -
来比较字符串,因此您应该删除 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}
关闭。你可以试试 key=lambda x: (-x[1], x[0])
不用 reverse=True
。需要注意的是,一个元素按升序排序,而另一个元素按降序排序(后者在元组排序中优先)。
我正在尝试对字典进行排序,例如:
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}
如果有人可以帮助我,那就太棒了!
您需要翻转当天的排序顺序。由于您不能使用 -
来比较字符串,因此您应该删除 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}
关闭。你可以试试 key=lambda x: (-x[1], x[0])
不用 reverse=True
。需要注意的是,一个元素按升序排序,而另一个元素按降序排序(后者在元组排序中优先)。