如何按键值对字典进行正确排序?

Zac*_*Lee 1 python dictionary

我想按特定键的值对字典进行排序(示例中的“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}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到上面评论中显示的我想要的结果?

And*_*ely 10

print(sorted(mydict.values(), key=lambda k: k["foo"], reverse=True))
Run Code Online (Sandbox Code Playgroud)

印刷:

[{'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}]
Run Code Online (Sandbox Code Playgroud)

编辑:包括"key"

[{'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}]
Run Code Online (Sandbox Code Playgroud)

印刷:

print(
    sorted(
        [{"key": k, **v} for k, v in mydict.items()],
        key=lambda k: k["foo"],
        reverse=True,
    )
)
Run Code Online (Sandbox Code Playgroud)