如果我有以下字典和列表,有没有办法可以查看列表中的项目是否包含在字典的键中?
我尝试反转字典并查找值,但键不能具有相同的值,因此它会弄乱架构。
('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', {'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}
如果您有大量单词或字典条目,这将很慢。我建议实现列表条目的trie并对其进行迭代,这会将复杂性从 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}