У меня есть три списка, первый - список имен, второй - список словарей, а третий - список данных. Каждая позиция в списке соответствует тем же позициям в других списках. List_1 [0] имеет соответствующие данные в List_2 [0] и List_3 [0] и т. Д. Я хотел бы превратить эти три списка в словарь внутри словаря, причем значения в List_1 являются первичными ключами. Как мне это сделать, сохраняя все в порядке?Соединительные словари
6
A
ответ
13
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> dict(zip(a, zip(b, c)))
{1: (4, 7), 2: (5, 8), 3: (6, 9)}
Смотрите documentation для получения дополнительной информации о zip
.
Как показано на рисунке ниже, вы можете взглянуть на itertools.izip()
, если ваши входные данные большие. izip
делает в основном то же самое, что и zip
, но он создает итераторы вместо списков. Таким образом, вы не создаете большие временные списки перед созданием словаря.
1
Python 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
Python 2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
0
если порядок этих вещей вопросов, вы не должны использовать словарь. по определению, они неупорядочены. вы можете использовать один из many ordered_dictionary implementations, плавающий вокруг, или дождаться python 2.7 или 3.1, который будет включать упорядоченную реализацию словаря в модуле коллекций.
Если a, b, c будет огромным, я рекомендую izip из модуля itertools. – Arpegius
@ lionbest: Хорошо, я добавил это. – balpha