python - 如何按键值正确排序字典?
问题描述
我想按特定键的值对字典进行排序(示例中为“foo”)
mydict = dict()
mydict["a"] = {"foo": 0.3, "boo": 0.1}
mydict["b"] = {"foo": 0.1, "boo": 0.2}
mydict["c"] = {"foo": 0.8, "boo": 0.3}
mydict["d"] = {"foo": 0.5, "boo": 0.4}
mydict["e"] = {"foo": 0.2, "boo": 0.5}
# sort by "foo" in descending order
# expected result: [{"foo": 0.8, "boo": 0.3}, {"foo": 0.5, "boo": 0.4}, {"foo": 0.3, "boo": 0.1}, {"foo": 0.2, "boo": 0.5}, {"foo": 0.1, "boo": 0.2}]
我怎样才能得到我想要的结果,如上面的评论所示?
解决方案
print(sorted(mydict.values(), key=lambda k: k["foo"], reverse=True))
印刷:
[{'foo': 0.8, 'boo': 0.3}, {'foo': 0.5, 'boo': 0.4}, {'foo': 0.3, 'boo': 0.1}, {'foo': 0.2, 'boo': 0.5}, {'foo': 0.1, 'boo': 0.2}]
编辑:包括"key"
:
print(
sorted(
[{"key": k, **v} for k, v in mydict.items()],
key=lambda k: k["foo"],
reverse=True,
)
)
印刷:
[{'key': 'c', 'foo': 0.8, 'boo': 0.3},
{'key': 'd', 'foo': 0.5, 'boo': 0.4},
{'key': 'a', 'foo': 0.3, 'boo': 0.1},
{'key': 'e', 'foo': 0.2, 'boo': 0.5},
{'key': 'b', 'foo': 0.1, 'boo': 0.2}]
推荐阅读
- javascript - 如何从登录的 Google 登录(仅限客户端应用程序)中正确获取访问令牌?
- javascript - 按重量对列表进行排序,选取项目的开头并为其分配自定义重量
- android - 从开始日期到结束日期重复本地通知,一天也重复 1-4 次 Android
- sql - 为什么jsp在同一个表单中多次显示同一个数据?
- php - ajax url路径未定义,如何获取ajax url中的wordpress文件路径?
- pam - 如何使用 pam_exec 和 PAM_TYPE 创建条件行为?
- uwp - UWP TreeView DragEnter 和 DragOver 事件不执行
- scrapy - Scrapy 不会抓取整个网站
- ruby - 在 Sinatra 中,如何渲染 json?
- c# - 如何使用 C# 中文本框的值查询 mySql 表?