Python“;“有多少个元素?”;

Python“;“有多少个元素?”;,python,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始终位于每行的

我有一些数据,例如:

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
您可以使用列表来执行此操作:


如果您要查找的内容超过两个,那么还有其他方法可以减少重复性。

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

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

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

使用
input
作为变量名是个坏主意,因为它会隐藏内置的
input()

我想你的意思是
U2:4
,因为在你的示例中有四个变量,而不是三个。是的,在这个示例4中,对不起,我的错误…是的,我知道,但当我写U1和U2时,就在这个示例中,有时我有许多其他的“字符串”和不同的名称,但总是在每个字符串的最后一位row@thaking:那么请澄清您的要求。
sum(1代表…
更好,或者如果您更喜欢
sum(x[2]==“U1”代表…
)。thaking:不,您的输入是
input
,就像您的示例一样
d
是一个字典,它逐行累加每个字符串的记录数。Hmmm,但是我现在如何调用这个值,例如,如果我想使用这个数字,我尝试d[0,1…]…但不是working@thaking:
print d[“U1”]
用于d中的k:print(k)
用于d中的k,v。items():print(k,v)
或其他。
>>> from operator import itemgetter
>>> from collections import Counter
>>> Counter(map(itemgetter(-1), input))
Counter({'U1': 6, 'U2': 4})