我有一个包含变量名的列表,以及一个包含名称及其ID的字典。
示例:
name=['name1','name2'....'name20']
dicti={'1':'name1', '2':'name2','hello':'world",'animal':'dog',...'20':'name20'}
我想要的是用列表中的元素搜索字典。如果列表元素存在于字典中,则不将其删除。
我收到了此代码
for i in dicti.values() :
for j in name :
if j != i :
del dicti[i]
else :
continue
运行代码时出现此错误:
KeyError:'name1'
它不能删除我想要的元素。
答案 0 :(得分:4)
使用dict
理解
例如:
name=set(['name1','name2','name20'])
dicti={'1':'name1', '2':'name2','hello':'world','animal':'dog',20:'name20'}
print({k:v for k, v in dicti.items() if v in name})
输出:
{20: 'name20', '1': 'name1', '2': 'name2'}
答案 1 :(得分:1)
您可以在此处使用filter()
。
name=['name1','name2'....'name20']
dicti={'1':'name1', '2':'name2','hello':'world",'animal':'dog',...'20':'name20'}
new_dict=dict(filter(lambda x: x[1] in name,dicti.items()))
print(new_dict)
输出
{'1': 'name1', '2': 'name2',... 20: 'name20'}