2013-07-20 3 views
3

나는 형태로 목록의 목록이 있습니다카운트

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

내가 주어진 튜플 제로 번째의 발생 횟수를 알고 싶습니다을 각 하위 목록의 위치. 위의 예에서 (1, 2)의 개수를 찾고 싶다면, 하위 목록의 첫 번째 항목으로 횟수 (1,2)가 표시되기 때문에 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