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

2024-04-18 04:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似的数组:

[['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’出现多少次。但是我怎么用二维数组来做呢?你知道吗


Tags: 字符串示例foocountcounterbar互联网blue
3条回答

使用生成器表达式提取要计数的项:

>>> 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})

您可以打开:

Counter(s for s, _ in l))

或者对于功能性方法:

from operator import itemgetter
print(Counter(map(itemgetter(0), l)))
Counter([z[0] for z in [['foo', 9283], ['bar', 7172], ['bar', 9890], ['foo', 91], ['fuubar', 8291]]])

相关问题 更多 >