python - 如何在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 back use dict
,但它只会在 Python >= 3.7 上保持排序。
print(dict(sortedPairs))
# {'saturday': 11, 'sunday': 11, 'friday': 10, 'wednesday': 10, 'thursday': 5,
# 'monday': 1, 'tuesday': 1}
推荐阅读
- javascript - 如何在保持当前内联样式的同时以编程方式将文本插入到草稿 js 富文本字段中?
- firebase - 来自 Firestore 的实时数据颤动不起作用
- reactjs - 我想将组件放在 TableBody 标记中
- python - 数独蛮力总是返回无
- r - 使用 stat_reg_line() 函数从 ggplot 中删除回归线方程的截距
- flutter - 我们如何在颤振中使用 ssh 库将 test.sh 文件移动到远程设备?
- kdb - 如何用 KDB 计算特征向量?
- solidity - 刚刚在蜜罐中被骗,是代码的哪一部分?
- python - 如何使 Tkinter 窗口的角变圆?
- javascript - 如何在 REACT 中的子组件中进行对象解构