首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何返回字典列表中不同键数量的长度,而不包括已经看到的键?

如何返回字典列表中不同键数量的长度,而不包括已经看到的键?
EN

Stack Overflow用户
提问于 2018-05-18 11:35:31
回答 3查看 46关注 0票数 1
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)
EN

回答 3

Stack Overflow用户

发布于 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_),就会得到所有键集。该集合的长度是唯一密钥的数量。

票数 1
EN

Stack Overflow用户

发布于 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)
票数 0
EN

Stack Overflow用户

发布于 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)都将是唯一键的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50403406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档