Python在元组列表中计数

时间:2015-11-04 14:59:35

标签: python list count tuples

基本上我有很多带有作者姓名的元组列表和一年如下

a =[('Volozhyn AI', 2007),
 ('Lam KL', 2010),
 ('Boudreau NG', 2006),
 ('Tsuchitani M', 1997),
 ('Zheng LP', 1997),

列表要长得多,我需要计算此列表中每年发生的次数,以便输出列表

b = [(1970, x times),
     (1971, y times), etc 

我发现函数Counter计算列表中的所有元素并给出类似的输出。但是,我似乎无法让Counter只算数年。 因此,我必须制作一个仅包含年份或其他方法的新列表。 建议?

2 个答案:

答案 0 :(得分:3)

from collections import Counter

a =[('Volozhyn AI', 2007),
 ('Lam KL', 2010),
 ('Boudreau NG', 2006),
 ('Tsuchitani M', 1997),
 ('Zheng LP', 1997)]

b = (Counter(i[1] for i in a)).items()
print b

输出:

[(2010, 1), (1997, 2), (2006, 1), (2007, 1)]

使用i[1] for i in a,您只能获得列表[2007, 2010, 2006, 1997, 1997])。然后,您使用Counter计算它们并将其转换为适合您所需输出的列表。

答案 1 :(得分:0)

from collections import Counter
Counter(elem[1] for elem in a)

会给出

Counter({1997: 2, 2010: 1, 2006: 1, 2007: 1})

上面的代码选取每个元素中的第二个元素[索引1],然后计算..