我有一些数据,例如:
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
答案 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()