Python“有多少元素”

时间:2011-05-13 00:18:06

标签: python

我有一些数据,例如:

input=[['1', '7', 'U1'], ['1.5', '8', 'U1'], ['2', '5.5', 'U1'], ['2', '9', 'U1'], ['2.5', '6.5', 'U1'], ['2.5', '8', 'U1'], ['2.5', '10', 'U2'], ['3', '4.5', 'U2'], ['3', '9', 'U2'], ['3.5', '5.5', 'U2']]

如何获取所有数据中有多少U1和U2数据? 此U1和U2始终位于每行的最后一位,但具有各种名称(因此必须首先读取名称....)!!!我想得到这个例子:

U1: 6
U2: 4

3 个答案:

答案 0 :(得分:6)

我将索引从2修改为-1,以反映您对每行的最后一个元素的要求,以防每行有不同数量的元素。

from collections import defaultdict
d = defaultdict(int)
for record in input:
    d[record[-1]] += 1
print d

答案 1 :(得分:4)

您可以使用列表理解

执行此操作
num_u1 = len([x for x in input if x[2] == "U1"])
num_u2 = len([x for x in input if x[2] == "U2"])

如果你有两件以上的东西,还有其他方法可以做到这一点,重复性较低。

答案 2 :(得分:3)

对于python2.7 +

>>> from operator import itemgetter
>>> from collections import Counter
>>> Counter(map(itemgetter(-1), input))
Counter({'U1': 6, 'U2': 4})

使用input作为变量名称是一个坏主意,因为它会影响内置input()