首页 > 解决方案 > python:根据另一个dict值从dict中删除值

问题描述

我有两个列表字典,xy. dict 是具有x索引值列表的从属 dict,0,1 ..ydict 是主 dict,我需要从(xdict`中的那个)中删除值:

例如:

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)

标签: pythonpython-3.xdictionary

解决方案


继续初始版本

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]
    

推荐阅读