我有一个这样的清单清单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 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
绝对可以将其压缩,但是您可以创建每个键的字典到每个值的列表:
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())
慕田峪9158850
TA贡献1794条经验 获得超7个赞
使用collections.Counter
:
如果我理解正确,您想知道每个“键”出现的次数。下面的代码可以做到这一点:
d = Counter(x[0] for x in list1)
添加回答
举报
0/150
提交
取消