Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找字典键是否包含Python中的项_Python_List_Dictionary_Lookup - Fatal编程技术网

查找字典键是否包含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)
,然后迭代这些键,将节省大量时间。