gpt4 book ai didi

python - 根据匹配值合并字典列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:47 25 4
gpt4 key购买 nike

我有一组类似这样的数据:

trades =  [{'ORDERID': 123, 'LEAVESQTY': 2200}, 
{'ORDERID': 123, 'LEAVESQTY': 500},
{'ORDERID': 456, 'LEAVESQTY': 100},
{'ORDERID': 789, 'LEAVESQTY': 300}]

我正在寻找一种有效的方法来为字典列表中的每个匹配 ORDERID 找到 LEAVESQTY 的最小值。

例如,对于这个例子,我想要的结果是:

output = [{'ORDERID': 123, 'LEAVESQTY': 5000},
{'ORDERID': 456, 'LEAVESQTY': 100},
{'ORDERID': 789, 'LEAVESQTY': 300}]

我尝试应用与基于匹配键值合并字典的类似问题相同的方法,我只是在基于值合并时遇到了麻烦。

最佳答案

这是使用 sortedtoolz.unique 的一种方法。这个想法是按 LEAVESQTY 排序,然后按 ORDERID 删除重复项。

如果您无权访问 toolz 库,其逻辑与 itertools 文档中的 unique_everseen recipe 相同。

from operator import itemgetter
from toolz import unique

trades = [{'ORDERID': 123, 'LEAVESQTY': 2200},
{'ORDERID': 123, 'LEAVESQTY': 500},
{'ORDERID': 456, 'LEAVESQTY': 100},
{'ORDERID': 789, 'LEAVESQTY': 300}]

sorter = sorted(trades, key=itemgetter('LEAVESQTY'))
res = list(unique(sorter, key=itemgetter('ORDERID')))

print(res)

[{'LEAVESQTY': 100, 'ORDERID': 456},
{'LEAVESQTY': 300, 'ORDERID': 789},
{'LEAVESQTY': 500, 'ORDERID': 123}]

关于python - 根据匹配值合并字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50839106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com