计算python中

时间:2017-12-01 01:02:34

标签: python dictionary

如何查看dict1dict2dict1中密钥的次数。如果dict2中的val密钥存在于变量4中,则应根据找到密钥的次数减去初始值dict1

例如print dict1 {(2, 0): 3, (3, 1): 0, (1, 1): 2, (2, 2): 1} 看起来像这样

dict2

print `dict2` {(2, 0): 323, (3, 1): 32, (10, 10): 21, (20, 2): 100} 看起来像这样

val

由于dicts之间有两个重复键,2应该等于dict2

如果dict1看起来与val相同,则0应为dict1

此外,dict2的大小始终相同,但inject可能会变得非常大,因此快速查找方法非常理想。最后,这里的词汇值并不是真的意味着什么。

4 个答案:

答案 0 :(得分:4)

使用set intersection:

d1 = {(2, 0): 3, (3, 1): 0, (1, 1): 2, (2, 2): 1} 
d2 = {(2, 0): 323, (3, 1): 32, (10, 10): 21, (20, 2): 100} 

sd1 = set(d1.keys())
sd2 = set(d2.keys())
len(sd1.intersection(sd2))

编辑: 由于关键视图已设置为类似,因此您可以直接执行d1.keys() & d2.keys()。请注意.keys()是一个非常便宜的调用,因为它只是为现有的dict结构提供了一个替代接口(注释中的@ PM2RING的Credits)。

答案 1 :(得分:4)

由于dict_keys为already set-like,因此您只需使用

即可
len(dict1.keys() & dict2.keys())

适用于Python 3.在Python 2中,等效视图对象是dict.viewkeys(),您可以使用它来进行类似操作。

len(dict1.viewkeys() & dict2.viewkeys())

答案 2 :(得分:0)

从每个字典中的键列表中设置。 找到这些集合的交集和并集。 union - intersection为您提供了一系列差异。 如果那是0,那么你返回0; 否则,返回交叉点的大小。

答案 3 :(得分:0)

这适用于Python 2和3:len(set(dict1).intersection(dict2))

In [1]: dict1 = {(2, 0): 3, (3, 1): 0, (1, 1): 2, (2, 2): 1}

In [2]: dict2 = {(2, 0): 323, (3, 1): 32, (10, 10): 21, (20, 2): 100}

In [3]: len(set(dict1).intersection(dict2))
Out[3]: 2