首页 > 解决方案 > 如何在不包括已经见过的键的情况下返回字典列表中不同键的长度?

问题描述

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)

标签: pythonpython-3.x

解决方案


from operator import or_ as union
from functools import reduce

len(reduce(union, map(dict.keys, self.dl)))

已经返回的视图keys()就像一个集合。因此,如果您or_从您的 dicts 中获取所有键集的并集 ( ),您将获得所有键的集合。该集合的长度是唯一键的数量。


推荐阅读