gpt4 book ai didi

Python根据值从字典列表中删除重复项

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

我有字典列表

vals = [
{'tmpl_id': 67, 'qty_available': -3.0, 'product_id': 72, 'product_qty': 1.0},
{'tmpl_id': 67, 'qty_available': 5.0, 'product_id': 71, 'product_qty': 1.0}
{'tmpl_id': 69, 'qty_available': 10.0, 'product_id': 74, 'product_qty': 1.0}
]

from operator import itemgetter
getvals = operator.itemgetter('tmpl_id')

val.sort(key=getvals)

result = []

for k, g in itertools.groupby(val, getvals):

result.append(g.next())

val[:] = result

我想删除重复值 (tmpl_id) 并且还基于 qty_available 较小或负数

输出如下:

vals = [
{'tmpl_id': 67, 'qty_available': 5.0, 'product_id': 71, 'product_qty': 1.0}
{'tmpl_id': 69, 'qty_available': 10.0, 'product_id': 74, 'product_qty': 1.0}
]

最佳答案

from collections import Counter

vals = [{'tmpl_id': 67, 'qty_available': -3.0, 'product_id': 72, 'product_qty': 1.0},
{'tmpl_id': 67, 'qty_available': 5.0, 'product_id': 71, 'product_qty': 1.0},
{'tmpl_id': 69, 'qty_available': 10.0, 'product_id': 74, 'product_qty': 1.0},]

k = [x['tmpl_id'] for x in vals]

new_vals=[]

for i in Counter(k):
all = [x for x in vals if x['tmpl_id']==i]
new_vals.append(max(all, key=lambda x: x['qty_available']))

>>> new_vals
[
{'product_qty': 1.0, 'qty_available': 5.0, 'tmpl_id': 67, 'product_id': 71},
{'product_qty': 1.0, 'qty_available': 10.0, 'tmpl_id': 69, 'product_id': 74}
]

关于Python根据值从字典列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158631/

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