Python dicionário erro de criação
-
06-07-2019 - |
Pergunta
Eu estou tentando criar um dicionário Python a partir de uma lista armazenada. trabalhos deste primeiro método
>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])
No entanto, o seguinte método não funciona
>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required
Então, eu estou perguntando por que o primeiro método, usando obras de anexação, mas o segundo método não funciona? Existe uma diferença entre myList
e myList2
?
Editar
verificado novamente myList2
na verdade tem mais de dois elementos. segundo exemplo atualizado para refletir isso.
Solução
Você está fazendo errado.
O construtor dict()
não toma uma lista de itens (muito menos uma lista contendo uma única lista de itens), leva um iterável de iterables de 2 elementos. Então, se você alterou o código a ser:
myList = []
myList.append(["mykey1", "myvalue1"])
myList.append(["mykey2", "myvalue2"])
myDict = dict(myList)
Em seguida, você iria conseguir o que você espera:
>>> myDict
{'mykey2': 'myvalue2', 'mykey1': 'myvalue1'}
A razão que isso funciona:
myDict = dict([['prop1', 'prop2']])
{'prop1': 'prop2'}
É porque está interpretando-a como uma lista que contém um elemento que é uma lista que contém dois elementos.
Essencialmente, o construtor dict
leva seu primeiro argumento e executa código semelhante a este:
for key, value in myList:
print key, "=", value