我有一个类似的阵列:
[['foo', 9283], ['bar', 7172], ['bar', 9890], ['foo', 2291], ['fuubar', 8291]]
我想在list[i][0]
中计算相同的值,而不指定我想要找到的字符串。我在互联网上找到的例子是关于一维数组或规范。如果我有一个非常简单的一维数组:
示例1,指定值(1)
[1, 2, 3, 4, 1, 4, 1].count(1)
3
示例2,未说明要查找的内容
>>> from collections import Counter
>>> z = ['blue', 'red', 'blue', 'yellow', 'blue', 'red']
>>> Counter(z)
Counter({'blue': 3, 'red': 2, 'yellow': 1})
我想要的输出会是类似的。根据我的例子,我想知道“foo”发生了多少次,“bar”发生,“fuubar”发生。但是如何使用2D数组呢?
答案 0 :(得分:1)
Counter([z[0] for z in [['foo', 9283], ['bar', 7172], ['bar', 9890], ['foo', 91], ['fuubar', 8291]]])
答案 1 :(得分:1)
使用生成器表达式提取要计数的项目:
>>> from collections import Counter
>>> l = [['foo', 9283], ['bar', 7172], ['bar', 9890], ['foo', 91], ['fuubar', 8291]]
>>> Counter(item[0] for item in l)
Counter({'foo': 2, 'bar': 2, 'fuubar': 1})
答案 2 :(得分:1)
你可以解压缩:
Counter(s for s, _ in l))
或者是功能性方法:
from operator import itemgetter
print(Counter(map(itemgetter(0), l)))