self.dl = ({'a':1, 'b': 2, 'c': 3}, {'c':13, 'd':14, 'e':15}, {'e':25, 'f':26, 'g':27})
我有这个字典的元组,并试图获得所有不同键的计数。我只能这样做,以便计算所有的密钥。这里的输出应该是7,但我得到了9,因为c和e被计算了两次。
到目前为止,我有这样的想法:
new = []
for d in self.dl:
for k in d:
new.append(k)
return len(new)
发布于 2018-05-18 11:43:32
from operator import or_ as union
from functools import reduce
len(reduce(union, map(dict.keys, self.dl)))
keys()
返回的视图已经像一个集合一样工作了。因此,如果从字典中提取所有键集的并集(or_
),就会得到所有键集。该集合的长度是唯一密钥的数量。
发布于 2018-05-18 11:39:26
你可以尝试一下这样的方法:
new = {}
for d in self.dl:
for k in d:
if k not in new:
new[k] = 1
return len(new)
发布于 2018-05-18 11:54:15
在这里,set
绝对是你想要的数据结构。有几种不同的方法可以累积集合:
new = set(k for d in self.dl for k in d)
或
from itertools import chain
new = set(chain(*self.dl))
或
new = set()
for d in self.dl:
new &= d.keys()
在所有情况下,len(new)
都将是唯一键的数量。
https://stackoverflow.com/questions/50403406
复制相似问题