首页 > 解决方案 > 列表项的直方图

问题描述

我有一些列表如下:

list1 = ['a_1','a_2','b_17','c_19']
list2 = ['aa_1','a_12','b_15','d_39']
list3 = ['a_1','a_200','ba_1','u_0']

我希望根据标签生成直方图,忽略编号,即a在所有列表中有 4 个条目,ba1 个条目,u有 1 个条目,依此类推。标签是来自特定文件夹的文件名,在添加数字之前,因此它是一个有限的已知列表。

如果没有一堆丑陋的循环,我怎样才能执行这样的计数?我可以unique在这里使用吗?

标签: pythonlist

解决方案


如果没有循环,您将无法实现它。但是您可以改为使用列表理解将其变成一行。像这样的东西。

list1 = ['a_1','a_2','b_17','c_19']
list2 = ['aa_1','a_12','b_15','d_39']
list3 = ['a_1','a_200','ba_1','u_0']

lst = [x.split('_')[0] for x in (list1 + list2 + list3)]

print({x: lst.count(x) for x in lst})

推荐阅读