计算Python中2d数组中非指定值的出现次数

时间:2015-02-16 13:34:39

标签: python arrays

我有一个类似的阵列:

[['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数组呢?

3 个答案:

答案 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)))