如何检查字典列表中的键值是否都等于0

时间:2019-09-04 05:27:03

标签: python list dictionary

我有一个字典列表,如:

dicts = [dict1,dict2,dict3,dict4]

dict1 = [{'name': 'blue', 'y': 1}, {'something else': 'red', 'y': 0}]  

dict2 = [{'name': 'green', 'y': 0}, {'name': 'purple', 'y':2}]

字典是字典列表

如何检查dict1的第一个和第二个y值是否均为0等。 如果dict都具有y == 0,则分配空数组

我也尝试过类似的操作,但是每个字典必须重复多次

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 = []

3 个答案:

答案 0 :(得分:1)

您需要这样的东西。

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)

答案 1 :(得分:0)

.Select(p => new DTO {
               Id = p.Id,
               Name = p.Name,
               Url = p.Url
           });

以例子

[[] if all([i['y']==0 for i in item]) else item for item in dicts]

输出为

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]

答案 2 :(得分:0)

如果one-line solution太复杂,请拆分任务,然后enumerate 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)

输出:

[[{'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}]]