2016-09-30 3 views
0

파이썬은 3 버전입니다.python3에서 sub_lists 길이를 계산합니다.

L=[[1,2], [3,4], [5,6,7]] 

내가 다음과 같이 모든 sub_list의 길이를 계산하고 사전에 적어하려는 : 내가 좋아하는, 하위 목록을 포함하는 목록이

D={2:2,3:1} 

는 것을, 우리 길이 2 인리스트 2 개와 길이 3 인리스트 1 개가 있습니다.

for-loop + check D [key]가 존재하는지 여부에 따라 수행 할 수 있습니다.

'파이썬적인 방법이 있습니까?'

당신은 키와리스트의 길이를 저장하고, 단지 1로 각각의 값을 일치하는 목록 길이 얻을 때마다 증가
+0

예. 'for 루프 '를 사용할 수 있습니다. 시도해 봤니? – estebanpdl

+0

이 작품을 보여줄 수 있습니까? – idjaw

+0

pythonic 방식으로 쓰기 전에 어떤 작업이 있습니까? 또한, 나는 3의 길이에 매핑 된 1 목록을 가져야한다고 생각합니다 (귀하의 예제는 거꾸로입니다) –

답변

2

사용 defaultdict :

from collections import defaultdict 

d = defaultdict(int) 
L = [[1,2], [3,4], [5,6,7]] 

for li in L: 
    d[len(li)] += 1 

print(d) # defaultdict(<class 'int'>, {2: 2, 3: 1}) 

또는뿐만 아니라 collections에서 Counter를 사용

from collections import Counter 

c = Counter(len(li) for li in L) 

print(c) # Counter({2: 2, 3: 1}) 
0

목록을 반복하여 길이가 키로 존재하는지 확인해야합니다. 존재하는 경우 값을 1 씩 증가시키고 값을 1로 추가하십시오. 다음은 샘플 코드입니다.

>>> L = [[1,2], [3,4], [5,6,7]] 
>>> my_len_dict = {} 
>>> for item in L: 
...  item_length = len(item) 
...  if item_length in my_len_dict: 
...   my_len_dict[item_length] += 1 
...  else: 
...   my_len_dict[item_length] = 1 
... 
>>> my_len_dict 
{2: 2, 3: 1} 
관련 문제