2016-11-08 4 views
-4

У меня есть 2 списка, когда я пытаюсь преобразовать их в dict, мой вывод случайный, может кто-нибудь помочь?Как преобразовать список в словарь в python?

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'. Обычные dicts не упорядочены в Python. –

+0

Словари не заказываются. Если вам нужен заказ (вы действительно?), Используйте 'OrderedDict'. – jonrsharpe

+0

Словарь Python (до Python 3.6) по своей сути неупорядочен. Если вы хотите сохранить заказ, используйте 'collection.OrderedDict' или используйте Python 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'] 
'' 
Смежные вопросы