读取列表列表并输出为字典,每个键的值计数

时间:2013-06-17 20:52:58

标签: python list dictionary

我有一个像这样的列表列表

list1=[['a', '2'] ['a', '1'] ['b', '3'] ['c', '2'] ['b', '1'] ['a', '1']['b', '1'] ['c', '2']['b', '3'] ['b', '1']]

我想了解一下,找出每个第一项的编号:

a:[2,1,1] b:[3,1,3,1] c:[2,2]

最后,它应该将每个键的计数和输出打印为字典

{'a': 3, 'b':4, 'c':2}

无需输出中间步骤。

请帮忙

2 个答案:

答案 0 :(得分:4)

使用collections.Counter

如果我理解正确,您想知道每个“密钥”存在的次数。以下代码将执行此操作:

d = Counter(x[0] for x in list1)

答案 1 :(得分:0)

这绝对可以压缩,但您可以为每个值列表创建每个键的字典:

d = {}
for key, val in list1:
    if key not in d:
        d[key] = []
    d[key].append(val)

然后使用列表推导和dict()构造函数来获得最终结果:

d2 = dict((k, len(vallist)) for k, vallist in d.iteritems())