concatenação Dicionários
-
22-07-2019 - |
Pergunta
Eu tenho três listas, o primeiro é uma lista de nomes, o segundo é uma lista de dicionários, eo terceiro é uma lista de dados. Cada posição em uma lista corresponde com as mesmas posições nas outras listas. List_1 [0] tem dados correspondente em list_2 [0] e List_3 [0], etc gostaria de ligar estes três listas para um dicionário, dentro de um dicionário, com os valores em list_1 sendo as chaves primárias. Como posso fazer isso, mantendo tudo em ordem?
Solução
>>> 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)}
Veja a documentação para mais informações sobre zip
.
Como lionbest pontos abaixo, você pode querer olhar para itertools.izip()
se o seu dados de entrada é grande. izip
faz essencialmente a mesma coisa que zip
, mas cria iteradores em vez de listas. Desta forma, você não criar grandes listas provisórias antes de criar o dicionário.
Outras dicas
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])
Se a ordem dessas coisas importa, você não deve usar um dicionário. por definição, eles são não-ordenada. você pode usar um dos muitas implementações ordered_dictionary flutuando ao redor ou espera para Python 2.7 ou 3.1 que incluirá uma implementação de dicionário no módulo coleções ordenada.