[英]python: remove values from dict based on another dict values
我有两个列表, x
和y
。 x
dict 是从属 dict,具有索引为0,1..
的值列表, y
dict 是主 dict,我需要从( x
dict`中的那个)中删除值:
例如:
x = {
'11': {
0: [{'chan_id': '859',
'brod_id': '596'}],
1: [{'brod_id': '434',
'restaurant_id': '343'},
{'chan_id': '545',
'brod_id': '57'}]
}
}
y = {"11":
[{"brod_id": "169", "chan_id": "209"},
{'chan_id': '859', 'brod_id': '596'},
{'chan_id': '545', 'brod_id': '57'}],
"22":
[{"brod_id": "232", "chan_id": "454"},
{'chan_id': '343', 'brod_id': '55'}]
}
期望的结果:
filtered_data(x,y,0) # removing only the `0` indices values of `x` dict from `y` dict
print(y)
y = {"11":
[{"brod_id": "169", "chan_id": "209"},
{'chan_id': '545', 'brod_id': '57'}],
"22":
[{"brod_id": "232", "chan_id": "454"},
{'chan_id': '343', 'brod_id': '55'}]
}
我试过了:
def filtered_data(x,y, val):
for key,val in x.items():
for k,v in val.items():
for i,elem in enumerate(v):
print(i)
print(elem) # match the values and delete from y?
filtered_data(x,y,0)
继续初始版本
def filtered_data(x,y, value):
for key,d in x.items():
for i,elem in enumerate(y[key]):
print(i)
print(elem)
print (d) # match the values and delete from y?
if elem in d[value]:
del y[key][i]
您也可以使用 for 循环检查 y 中的元素是否在 x 中。
[y[i].remove(j) for i in y if i in x for j in y[i] if j in sum([x[i][k] for k in x[i]],[])]
Output
{'11': [{'brod_id': '169', 'chan_id': '209'}, {'chan_id': '545', 'brod_id': '57'}],
'22': [{'brod_id': '232', 'chan_id': '454'}, {'chan_id': '343', 'brod_id': '55'}]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.