查找字典键是否包含Python中的项
如果我有以下字典和列表,是否有一种方法可以查看列表中的项目是否包含在字典的键中 我尝试反转字典并查找值,但键不能具有相同的值,因此会弄乱模式查找字典键是否包含Python中的项,python,list,dictionary,lookup,Python,List,Dictionary,Lookup,如果我有以下字典和列表,是否有一种方法可以查看列表中的项目是否包含在字典的键中 我尝试反转字典并查找值,但键不能具有相同的值,因此会弄乱模式 ('dict', {'2D 4D': 0, '1B 2C': 0}) ('list', ['2B', '2D', '3D', '4D', '4A']) 所以当你问类似的问题时 if key in dict: //if '2D' is in dict dict[key]+=1 //{'2D 4D': 1} 您可以将每个dict键条目与列表中的所
('dict', {'2D 4D': 0, '1B 2C': 0})
('list', ['2B', '2D', '3D', '4D', '4A'])
所以当你问类似的问题时
if key in dict: //if '2D' is in dict
dict[key]+=1 //{'2D 4D': 1}
您可以将每个dict键条目与列表中的所有条目进行比较。出于干净代码的目的,不要将
dict
/list
用作var名称:
mdict = {'2D 4D': 0, '1B 2C': 0}
mlist = ['2B', '2D', '3D', '4D', '4A']
for k in mdict.keys():
for e in mlist:
if e in k:
mdict[k] += 1
# mdict:
{'1B 2C': 0, '2D 4D': 2}
如果你有一个庞大的单词或字典条目列表,这将是缓慢的。我建议实现一个你的列表条目并重复它,这将减少从O(m*n)到O(n+m)的复杂度。 如果DICT的键被假定为中间有一个空间的方式,你也可以使用这个。
a = {'2D 4D': 0, '1B 2C': 0}
b = ['2B', '2D', '3D', '4D', '4A']
for i in a.keys():
a[i]=len(set(i.split()).intersection(b))
输出:
{'2D 4D': 2, '1B 2C': 0}
从原始dic创建附加字典,如
{'2D':['2D 4D'],'4D':['2D 4D'],'1B':['1B 2C'],'2C':['1B 2C']}
并使用它按搜索项查找原始dic中的键。是否有方法计算键中的项数?i、 e.len(2D 4D)=2
?打印([(key,len(key.split(“”)),用于mdict.keys()])@williammerritt要添加到@ncica,如果您的列表包含大量重复项,您可以进行收集。首先计数器(mlist)
,然后迭代这些键,将节省大量时间。