python - 按属性顺序迭代字典列表

标签 python sorting

这个问题在这里已经有了答案:





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

怎么办呢?如果我要更换 dictsTransaction具有 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/

相关文章:

python - 删除法语和英语中的停用词

sorting - 在groovy中按文件名对数组进行排序

XSLT 按字母顺序和数字顺序排序问题

c# - 这种并行排序合并是否正确实现?

python - 使用 python 在没有唯一标识符的情况下抓取 html

python - 以十六进制格式提取 matplotlib 颜色图

python - 在 Django 中过滤超过 0000-00-00 日期的对象

c++ - 高效实现多线程排序算法的关键是什么?天真的实现不能正常工作

excel - 按部分文本的字母顺序对相似文本列进行排序,而不是第一个不同的字母。使用 Excel 根据另一个列对列进行排序

python - 使用谷歌python的街道城市反向地理编码