Python 搜索字典中的列表元素,如果没有';不存在
我有一个充满变量名的列表和一个包含名称及其ID的字典 例如:Python 搜索字典中的列表元素,如果没有';不存在,python,list,dictionary,Python,List,Dictionary,我有一个充满变量名的列表和一个包含名称及其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 !=
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:“名称1”
而且它不能删除我想要的元素。使用
命令
Ex:
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'}
输出:
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'}
使用dict
理解
Ex:
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'}
输出:
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'}
您可以在此处使用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'}
您可以在此处使用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'}
因此,删除列表中除此之外的所有内容。对吗?这回答了你的问题吗?因此,删除列表中除此之外的所有内容。对吗?这回答了你的问题吗?如果name
太大,则首先转换为set
。如果name
太大,则首先转换为set
。