将某些值保留在基于列表的字典值中

时间:2019-09-11 02:49:34

标签: python-3.x string loops dictionary

我有字典d

 d = {'1': ['Fisherman', 'fam', '125', '53901', 'funny'],
     '2': ['Joi', '521', 'funny','fun', '1245']}

和列表l

l = ['521', 'Fisherman', 'fun','A2ML1', 'A3GALT2','funny']

我想保留d中不在l中的值。我希望输出为

d_list = {'1': ['fam','125', '53901'],'2': ['Joi', '1245']}

为此,我尝试了

d_list = [] 
for k, v in d.items():
    if v not in l:
        d_list.append(v) 

但这并不能满足我的需求。我该如何对自己的代码(或新代码)进行操作以得到所需的d_list

2 个答案:

答案 0 :(得分:0)

v是一个列表,而不是str

尝试此代码:

d1 = {}
for k, v in d.items():
    d1[k] = [i for i in v if i not in l]
d1

输出:

{'1': ['fam', '125', '53901'], '2': ['Joi', '1245']}

答案 1 :(得分:0)

您也可以这样做

{key:set(values) - set(l) for key, values in d.items()}

或者如果您希望值是列表而不是set

{key:list(set(values) - set(l)) for key, values in d.items()}