2016-11-08 1 views
-4

나는 2 개의 목록을 가지고 있는데, 내 출력을 임의로 바꿀 수있을 때 그 사람을 도와 주겠다. 코멘트에서 언급 한 바와 같이목록을 파이썬으로 사전으로 변환하는 방법은 무엇입니까?

a=['abc', 'def', 'ghi', 'jkl', 'mno'] 
b=['', '', ['123', '456', '786', '989'], '', ['222', '888', '111', '333']] 

print(dict(zip(a,b))) 

output: {'def': '', 'ghi': ['123', '456', '786', '989'], 'jkl': '', 'abc': '', 'mno': ['222', '888', '111', '333']} 

what i want is 
{'abc':'', 'def':'', 'ghi':['123', '456', '786', '989'],'jkl':'','mno':['222', '888', '111', '333']} 
+2

이렇게하려면 'OrderedDict'가 필요합니다. 일반 dict은 Python으로 정렬되지 않습니다. –

+0

사전은 주문하지 않습니다. 주문이 필요한 경우 (실제로 하시겠습니까?), 'OrderedDict'를 사용하십시오. – jonrsharpe

+0

파이썬 사전 (파이썬 3.6 이전)은 본질적으로 순서가 없습니다. 순서를 보존하려면'collections.OrderedDict'를 사용하거나 파이썬 3.6을 사용하십시오 (그러나 여전히 베타 버전입니다). – Duncan

답변

0

, 당신은 당신이 당신의 사전에서 요소의 순서에 의존 할 경우 OrderedDict를 사용해야합니다 :

그것은 같은 방식으로 액세스 할 수 있습니다
>>> from collections import OrderedDict 
>>> OrderedDict(zip(a, b)) 
OrderedDict([('abc', ''), ('def', ''), ('ghi', ['123', '456', '786', '989']), ('jkl', ''), ('mno', ['222', '888', '111', '333'])]) 

보통 dict :

>>> x = OrderedDict(zip(a, b)) 
>>> x['abc'] 
'' 
관련 문제