[英]How check if values of keys in list of dictionaries are both equal 0
I have a list of dictionaries like:我有一个字典列表,如:
dicts = [dict1,dict2,dict3,dict4]
dict1 = [{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}]
dict2 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]
dicts are list of dictionaries dicts 是字典列表
How can I check if both values in dict1 first and second y value is 0 etc. If dict have both y == 0 then assign empty array如何检查 dict1 中的第一个值和第二个 y 值是否为 0 等。如果 dict 都有 y == 0 则分配空数组
I have tried also something like this but have to repeat this so many times for each dict我也尝试过这样的事情,但必须为每个 dict 重复很多次
check = 0
for el in dict1:
if el['y'] == 0:
check += 1
if check == len(dict1):
dict1 = []
for el in dicts:
for y in el:
if all(x == 0 for x in y.values()):
el = []
You need something like this.你需要这样的东西。
dicts=[]
new_dicts=[]
for dic in dicts:
flag=0
for el in dic:
if el['y']!=0:
flag=1
break
if flag==0:
new_dict.append([])
else:
new_dict.append(dic)
[[] if all([i['y']==0 for i in item]) else item for item in dicts]
Take example举个例子
dict1 = [{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}]
dict2 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]
dict3 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':0}]
dict4 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]
dicts = [dict1,dict2,dict3,dict4]
The output would be输出将是
[[{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}],
[{'name': 'green', 'y': 0}, {'name': 'purple', 'y': 2}],
[],
[{'name': 'green', 'y': 0}, {'name': 'purple', 'y': 2}]]
If a one-line solution is too complex, split up the task and enumerate your dicts
to replace the element you checked to have all {"y":0}
:如果单行解决方案太复杂,请拆分任务并枚举您的
dicts
以替换您检查的所有元素{"y":0}
:
dict1 = [{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}]
dict2 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]
dict3 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':0}]
dict4 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]
dicts = [dict1,dict2,dict3,dict4]
for i,d in enumerate(dicts):
zeros = all(i["y"]== 0 for i in d) # check if all are 0
if zeros:
dicts[i] = [] # if so replace element in dicts by []
print (dicts)
Outputs:输出:
[[{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}],
[{'name': 'green', 'y': 0}, {'name': 'purple', 'y': 2}],
[],
[{'name': 'green', 'y': 0}, {'name': 'purple', 'y': 2}]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.