如何按键值对字典进行正确排序?
我想按特定键的值对字典进行排序(示例中的“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}]
[{'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,
)
)