开发者

Python "how many elements have"

I have some data, for example:

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']]

How can I get nu开发者_如何转开发mbers of how many U1 and U2 data is in all my data? This U1 and U2 is always on last place of every row, but has various name(so it must first read name....)!!!. I want to get for this example:

U1: 6
U2: 4


I modified the index from 2 to -1 to reflect your requirement of 'last element on every row' in case each row has a different number of elements.

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


You can do this using a list comprehension:

num_u1 = len([x for x in input if x[2] == "U1"])
num_u2 = len([x for x in input if x[2] == "U2"])

There are other ways to do this that are less repetitive if you have more than two things you're looking for.


For python2.7+

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

Using input as a variable name is a bad idea because it shadows the builtin input()

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜