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}
4

2 回答 2

2

您可以将每个 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)。

于 2019-05-08T15:54:19.660 回答
0

如果 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}
于 2019-05-08T16:17:52.433 回答