2013-07-20 57 views
3

我列出的形式列表:計數給定項目的

[[(1, 2), (2, 1)], [(1, 2), (1, 2)], [(2, 3), (2, 2)]] 

我想知道在第零發生給定元組的次數每個子列表的位置。在上面的例子中,如果我想查找(1,2)的計數,我希望返回2,因爲次數(1,2)的次數作爲子列表中的第一項出現。

我試過使用list.count(),但似乎僅限於第一個列表中的出現次數,並且無法解析子列表中的位置。

我也看了一下Counter(),但那也似乎並沒有給我想要的東西。

回答

2
a = [[(1, 2), (2, 1)], [(1, 2), (1, 2)], [(2, 3), (2, 2)]] 
item = (1,2) 
count = [sublist[0] for sublist in a].count(item) 
4
>>> from collections import Counter 
>>> lst = [[(1, 2), (2, 1)], [(1, 2), (1, 2)], [(2, 3), (2, 2)]] 
>>> c = Counter(sublst[0] for sublst in lst) 
>>> c 
Counter({(1, 2): 2, (2, 3): 1}) 
>>> c[(1, 2)] 
2 
0

這可能不是很優雅,但我只是玩弄......

>>> lst 
[[(1, 2), (2, 1)], [(1, 2), (1, 2)], [(2, 3), (2, 2)]] 

>>> (lambda x: [l[0] == (1,2) for l in x].count(True))(lst) 
2 

>>> (lambda list,tuple: [l[0] for l in list].count(tuple))(lst, (1,2)) 
2 

>>> z=0 
>>> for ll in lst: 
...  if ll[0] == (1,2): z+=1 
... 
>>> z 
2