这个问题在这里已经有了答案:
How do I sort a list of dictionaries by a value of the dictionary?
(18 个回答)
7年前关闭。
考虑一个列表 dict
s 带有 date
属性(property)和amount
属性(property):
transactions = [
{'date': '2013-05-12', 'amount': 1723},
{'date': '2013-07-23', 'amount': 4523},
{'date': '2013-02-01', 'amount': 2984},
]
我想添加一个 balance 属性,但为此我必须遍历
date
中的列表。命令:balance = 0
for t in transactsions: # Order by date
balance += t['amount']
t['balance'] = balance
怎么办呢?如果我要更换
dicts
与 Transaction
具有 date
的对象和 amount
属性,那么有可能吗?
最佳答案
是的,使用 sorted() 函数的“key”关键字参数都可以实现。看一下片段:
>>> l = [1, 3, 2]
>>> sorted(l)
[1, 2, 3]
>>> sorted(l, key=lambda x: x**2)
[1, 2, 3]
>>> sorted(l, key=lambda x: -x)
[3, 2, 1]
您可以将可调用对象作为“key”关键字参数传递给 sorted(),可调用对象将用于提供排序键。对于您的第一个问题,您可以将交易包装在 sorted 中并将 lambda x: x['date] 作为“键”传递。对于对象,只需将“键”更改为 lambda x: x.date 之类的内容。
关于python - 按属性顺序迭代字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901048/