2012-06-01 4 views
0

빈 목록 사전을 초기화하고 있습니다. 다음보다 사전을 초기화하는 효율적인 방법이 있습니까?파이썬에서 빈 목록 사전을 만드는 가장 효율적인 방법은 무엇입니까?

dictLists = {} 
dictLists['xcg'] = [] 
dictLists['bsd'] = [] 
dictLists['ghf'] = [] 
dictLists['cda'] = [] 
... 

매번 dictLists를 쓸 필요가없는 방법이 있습니까? 아니면 피할 수없는 방법입니까?

+0

사전 키는 실제로 원하는 것입니까? 무작위 또는 산술 진행 여부가 중요합니까? – Ben

+0

키를 추측하는로드는 변수 또는 유사 항목에 저장되며 루핑됩니다. 당신의 열쇠는 그런 정적입니까? 아니면 생성 된 것입니까? –

+0

키가 고정되어 있습니다. – idealistikz

답변

8

당신은 당신이를 설정할 수 있습니다 collections.defaultdict을 사용할 수 있습니다 누락 된 키에 특정 값을 반환하는 팩터 리 메서드입니다.

a = collections.defaultdict(list) 

편집 :

여기

지금 여기

b = ['a', 'b','c','d','e'] 

저를 "미리 정의 된 키"

for key in b: 
    a[key].append(33) 
+0

그건 내 다음 편집 될거야 : - P –

+0

너무 느려; D .... –

+0

키가 정적이라면이 방법이 효과가 있습니까? – idealistikz

3

정적 키를 추가하는 경우 왜 직접 생성자 생성자에 넣지 않으십니까?

dictLists = dict(xcg=[], bsd=[], ghf=[]) 

이나, 열쇠는 항상 또한 유효한 파이썬 식별자가 아닌 경우 :

dictLists = {'xcg': [], 'bsd': [], 'ghf': []} 

반면에, 당신의 키는 키를 통해 루프, 정적 또는 쉽게 순서대로 저장되지 않습니다, 경우 그들 중 많은 수가 더 효율적일 수 있습니다. keys 변수 결정 밖으로 다음 예는 여전히 유형이 더 이상 위의 방법보다 효율적하지만 keys 경우이보다 효율적으로 할 수있는 몇 가지 방법으로 생성 된 :

keys = ['xcg', 'bsd', 'ghf', …] 
dictLists = {key: [] for key in keys} 
+0

포스터가 물었을 때 이것은 가장 효율적입니다. – georg

2

을 사용하고 내 열쇠 당신은 또한에 대한 루프를 사용할 수 있습니다 추가 할 키 :

for i in ("xcg", "bsd", "ghf", "cda"): 
    dictList[i] = [] 
키가 사전에 알려진 경우
6

, 당신은> = 2.7 파이썬에서,

dictLists = dict((key, []) for key in ["xcg", "bsd", ...]) 

을하거나 할 수 있습니다 사전 함축 지원 파이썬의 버전에서는

dictLists = {key: [] for key in ["xcg", "bsd", ...]} 
1

(파이썬 2.7 이상) :

dictLists = {listKey: list() for listKey in listKeys} 
+0

@MartijnPieters 감사합니다. 확인을 얻었으므로 이제 내 대답을 단순화했습니다. '[]'는 다른 사람의 대답에 사용 된'list()'대신에 작동 할 수도 있습니다. – JAB

관련 문제