2015-11-04 81 views
0

基本上計數我有一個像今年這裏下面Python中的一個元組列表

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只算數年。 所以我不得不僅僅用年數或者其他方法來創建一個新的列表。 建議?

+2

你有沒有*試過* *「僅僅用年數做一個新的列表」*?這可能是最直接的方法。 – jonrsharpe

+0

我可以創建簡單的列表嗎? – tortilla

+2

...是的,你可以。 – jonrsharpe

回答

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對它們進行計數並將其轉換爲適合您所需輸出的列表。

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

會給

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

以上代碼拾取中的每個元素的第二元素[索引1],然後計數..

+2

如果您打算髮布答案,最好還是提供解釋。代碼傾銷並不是最好的方法。 – idjaw

+0

好的答案不僅應該包含代碼,還應該解釋。請在代碼中顯示一個示例輸出,以便OP能夠看到你在這裏做什麼。 – Tgsmith61591

+0

這是第一次修改完全垃圾,甚至與其他人的幫助,你仍然沒有提供有益的解釋 – jonrsharpe

相關問題