Python 如何计算字典列表中键的出现次数

Python 如何计算字典列表中键的出现次数,python,python-2.x,python-2.6,Python,Python 2.x,Python 2.6,我知道这是一个常见问题,但是我没有访问计数器模块的权限,因为我使用的是Python的v2.6。我想计算特定键在字典列表中出现的时间 如果我的字典是这样的: data = [{'a':1, 'b':1}, {'a':1, 'c':1}, {'b':1, 'c':1}, {'a':1, 'c':1}, {'a':1, 'd':1}] 我怎样才能知道“a”出现了多少次?我尝试过使用len,但它只返回一个键的值的数目 len(data['a']) 您将无法访问集合。计数器,但是集合。在Python

我知道这是一个常见问题,但是我没有访问计数器模块的权限,因为我使用的是Python的v2.6。我想计算特定键在字典列表中出现的时间

如果我的字典是这样的:

data = [{'a':1, 'b':1}, {'a':1, 'c':1}, {'b':1, 'c':1}, {'a':1, 'c':1}, {'a':1, 'd':1}]
我怎样才能知道“a”出现了多少次?我尝试过使用len,但它只返回一个键的值的数目

len(data['a'])

您将无法访问
集合。计数器
,但是
集合。在Python 2.5中添加了defaultdict

并展平列表

data = [j for i in data for j in i.keys()]

# ['a', 'b', 'a', 'c', 'c', 'b', 'a', 'c', 'a', 'd']
collections.defaultdict

from collections import defaultdict
dct = defaultdict(int)

for key in data:
  dct[key] += 1

# defaultdict(<type 'int'>, {'a': 4, 'c': 3, 'b': 2, 'd': 1})
从集合导入defaultdict
dct=defaultdict(int)
对于输入数据:
dct[键]+=1
#defaultdict(,{'a':4,'c':3,'b':2,'d':1})

如果您只需要
a
的计数,有更简单的方法可以做到这一点,但这将为您提供字典列表中所有键的计数。

这个问题看起来非常像一个课堂作业。下面是一段简单的代码,可以完成这项工作:

n=0
for d in data:
   if 'a' in d:
       n+=1
print(n) 
这里
n
是一个计数器,for循环遍历字典列表。
如果键“a”在字典d中,则d中的
'a'表达式将返回true,在这种情况下,计数器n将递增。最后打印结果。我相信在Python2.6中,括号是可选的(我使用的是3.6)。

您可以使用列表理解

data = [{'a':1, 'b':1}, {'a':1, 'c':1}, {'b':1, 'c':1}, {'a':1, 'c':1}, {'a':1, 'd':1}]
sum([1 for d in data if 'a' in d])
说明:
首先从列表数据中获取dictionary对象,检查dictionary中是否存在键“a”,如果存在,则向列表中添加1。然后对新列表求和。

一行解决方案可以是:


len([k代表数据中的d代表k代表d.keys(),如果k=='a'])
为此,您可以编写以下函数,用于提供的结构中的数据(DICT列表):

然后,您可以按如下方式调用该函数:

data = [{'a':1, 'b':1}, {'a':1, 'c':1}, {'b':1, 'c':1}, {'a':1, 'c':1}, {'a':1, 'd':1}]
count_a = count_key('a',data)

在这种情况下,计数a将为4。

看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。你能发布你的尝试吗?我已经更新了帖子以包含我的“尝试”,我知道这是不正确的。@chriszBTW,如前所述,Python2.5和2.6有一个计数器。不鼓励使用代码回答。你能说几句话,解释一下为什么会这样做,以及为什么会这样做,并回答OP的情况吗?
data = [{'a':1, 'b':1}, {'a':1, 'c':1}, {'b':1, 'c':1}, {'a':1, 'c':1}, {'a':1, 'd':1}]
count_a = count_key('a',data)