如何计算词典列表

时间:2018-05-22 16:44:48

标签: python python-2.x python-2.6

我知道这是一个经常被问到的问题,但我没有访问Counter模块,因为我正在使用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'])

5 个答案:

答案 0 :(得分:1)

您可以使用列表理解。

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])

说明: 首先从列表数据中取出字典对象,检查键是否为' a'是否存在于字典中,如果存在,则在列表中添加1。然后总结新列表。

答案 1 :(得分:1)

单行解决方案可能是:

{{1}}

答案 2 :(得分:0)

您无法访问 collections.Counter ,但在Python 2.5中添加了 collections.defaultdict

keys 并展平列表

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})

如果您只需要a的计数,有更简单的方法可以执行此操作,但这将为您提供词典列表中所有键的计数。

答案 3 :(得分:0)

这个问题看起来非常类似于课堂作业。这里有一小段代码可以完成这项工作:

n=0
for d in data:
   if 'a' in d:
       n+=1
print(n) 

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

答案 4 :(得分:0)

为此您可以编写以下函数,该函数适用于您提供的结构中的数据(dicts列表):

def count_key(key,dict_list):
    keys_list = []
    for item in dict_list:
        keys_list += item.keys()
    return keys_list.count(key)

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

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)

在这种情况下,count_a将为4。