我有问题在python想象一个包含字典的列表如何按字典中的值排序?
想象一下这个列表:
lst = [
{
"a" : 3,
"b" : 2
},
{
"a" : 1,
"b" : 4
},
{
"a" : 2,
"b" : 3
}
]
我们如何按照"a"的值对列表进行排序?在每个字典中(python)我的意思是我想要这个列表在最后:
lst = [
{
"a" : 1,
"b" : 4
},
{
"a" : 2,
"b" : 3
},
{
"a" : 3,
"b" : 2
}
]
您可以向sorted
提供lambda
密钥:
>>> lst = [
... {
... "a" : 3,
... "b" : 2
... },
... {
... "a" : 1,
... "b" : 4
... },
... {
... "a" : 2,
... "b" : 3
... }
... ]
>>> sorted(lst, key=lambda d: d["a"])
[{'a': 1, 'b': 4}, {'a': 2, 'b': 3}, {'a': 3, 'b': 2}]
一种方法,使用key
参数与itemgetter
:
from operator import itemgetter
lst = [{"a": 3, "b": 2}, {"a": 1, "b": 4}, {"a": 2, "b": 3}]
res = sorted(lst, key=itemgetter("a"))
print(res)
[{'a': 1, 'b': 4}, {'a': 2, 'b': 3}, {'a': 3, 'b': 2}]
来自itemgetter
的文档:
返回一个可调用对象,该对象使用操作数的getitem()方法。如果指定了多个项目,返回查找值的元组。例如:
f = itemgetter(2)之后,调用f(r)返回r[2]。
g =itemgetter(2、5、3),g (r)的调用将返回(r [2], [5], r[3])。