我有一个字典列表,如:
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 = []
答案 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}]]