我有一个这样的列表列表
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}
不需要输出中间步骤。
请帮忙
我有一个这样的列表列表
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}
不需要输出中间步骤。
请帮忙
使用collections.Counter:
如果我理解正确,您想知道每个“键”出现的次数。以下代码将执行此操作:
d = Counter(x[0] for x in list1)
这绝对可以被压缩,但是您可以为每个值的列表创建每个键的字典:
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())