0

我有一个这样的列表列表

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}

不需要输出中间步骤。

请帮忙

4

2 回答 2

4

使用collections.Counter

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

d = Counter(x[0] for x in list1)
于 2013-06-17T20:55:33.313 回答
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())
于 2013-06-17T21:06:34.600 回答