首页 > 解决方案 > 如何按键值正确排序字典?

问题描述

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

我怎样才能得到我想要的结果,如上面的评论所示?

标签: pythondictionary

解决方案


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}]

推荐阅读