2013-10-09 7 views
2

n에 입력하면 n+1 사전 count_dict0...n 키로 생성됩니다.비 유형 객체에 추가 속성이 없습니다

binary_list이라는 목록을 구문 분석하고 각 문자열의 크기가 각각 0 또는 1로 구성된 n 인 문자열을 포함하고 싶습니다. 이 작업을 수행 할 수

{0:['000'], 1:['001','010','100'] , 2:['011', '101', '110'] , 3:['111']} 

내 코드 : 각각의 구문 분석은 1 개 문자열의 및 append 적절한 키

예 1의 수와 각 문자열의 수를 계산합니다

count_dict = dict.fromkeys(range(0,n+1)) 

for element in binary_list: 
    count_dict[element.count('1')].append(element) 

오류 "

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "facebook_prob.py", line 23, in sortbit 
    count_dict[element.count('1')].append(element) 
AttributeError: 'NoneType' object has no attribute 'append' 

답변

5

두 번째 인수를 지정하지 않으면 값은 기본적으로 없음. dict.fromkeys에 의해 생성 된 값은 모든 항목에 의해 공유되어, 그 외에도

>>> n = 3 
>>> count_dict = dict.fromkeys(range(0,n+1)) 
>>> count_dict 
{0: None, 1: None, 2: None, 3: None} 

(dict.fromkeys 참조).

>>> count_dict = dict.fromkeys(range(0,n+1), []) 
>>> count_dict 
{0: [], 1: [], 2: [], 3: []} 
>>> count_dict[0] is count_dict[1] 
True 

collections.defaultdict이 더 적절합니다.

>>> from collections import defaultdict 
>>> count_dict = defaultdict(list) 
>>> count_dict[0].append('000') 
>>> count_dict[1].append('001') 
>>> count_dict[1].append('010') 
>>> count_dict 
defaultdict(<type 'list'>, {0: ['000'], 1: ['001', '010']}) 
+0

고맙습니다. – Liondancer

관련 문제