![](/img/trans.png)
[英]filter list of dictionaries based on a particular value of a key in that dictionary
[英]Group list of dictionary based on particular key and add another value to it?
我有这样的字典列表
l = [
{'vehicle': 708.75, 'general': None, 'salesperson': 'SAJANEESH'},
{'vehicle': None, 'general': 1044.48, 'salesperson': 'SAJANEESH'},
{'vehicle': None, 'general': 7035.0, 'salesperson': 'MATHEW'},
]
我正在尝试像这样更改字典的新列表。
预期产出
l = [
{'vehicle': 708.75, 'general': 1044.48, 'salesperson': 'SAJANEESH'},
{'vehicle': None, 'general': 7035.0, 'salesperson': 'MATHEW'},
]
我正在尝试将销售人员分组并为其添加一般价值或车辆价值。 我像这样尝试
import collections
res = collections.defaultdict(list)
for i in l:
for key, val in i.items():
res[val].append(key)
print(res)
但它显示错误的结果。有什么建议可以得到这个??
您可以简单地使用遍历数据结构
[root@cscale-82-69 python]# cat stck.py
l = [
{'vehicle': 708.75, 'general': None, 'salesperson': 'SAJANEESH'},
{'vehicle': None, 'general': 1044.48, 'salesperson': 'SAJANEESH'},
{'vehicle': None, 'general': 7035.0, 'salesperson': 'MATHEW'},
]
y = []
for each in l:
name = each['salesperson']
count = 0
for _ in y:
if _['salesperson'] == name:
count += 1
for key, val in _.items():
if _[key] == None:
_[key] = each[key]
if count == 0:
y.append(each)
print (l)
print (y)
[root@cscale-82-69 python]# python stck.py
[{'general': 1044.48, 'salesperson': 'SAJANEESH', 'vehicle': 708.75}, {'general': 1044.48, 'salesperson': 'SAJANEESH', 'vehicle': None}, {'general': 7035.0, 'salesperson': 'MATHEW', 'vehicle': None}]
[{'general': 1044.48, 'salesperson': 'SAJANEESH', 'vehicle': 708.75}, {'general': 7035.0, 'salesperson': 'MATHEW', 'vehicle': None}]
[root@cscale-82-69 python]#
您可以将itertools.groupby
用于唯一列表:
from itertools import groupby
from operator import itemgetter
key = itemgetter('vehicle')
print([next(v) for _, v in groupby(sorted(l, key=key), key=key)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.