如何在列表中排序字典?



我有问题在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])。

最新更新