Python конвертировать несколько списков в словарь - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть 3 списка:

names = ["john", "paul", "george", "ringo"]
job = ["guitar", "bass", "guitar", "drums"]
status = ["dead", "alive", "dead", "alive"]

Я пытаюсь найти наилучший способ объединить эти списки в диктовку, подобную следующей:

{"person":{"Name":"john", "Job":"guitar", "Status":"dead"}, "person":{"Name":"paul", "Job":"bass", "Status":"alive"}, "person":{"Name":"george", "Job":"guitar", "Status":"dead"}, "person":{"Name":"ringo", "Job":"drums", "Status":"alive"}}

Я пытался использовать dict (zip), но не могу отформатировать его, как указано выше.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Я думаю, что вы хотите, это список словарей. Вы можете zip ваши три списка вместе и использовать понимание списка. Вот пример:

[{'name': name, 'job': job, 'status': status} for name,job,status in zip(names,jobs,statuses)]

(также переименовывая ваши job в jobs и status в statuses)

Что даст вам:

[
  {'name': 'john', 'job': 'guitar', 'status': 'dead'},
  {'name': 'paul', 'job': 'bass', 'status': 'alive'},
  {'name': 'george', 'job': 'guitar', 'status': 'dead'},
  {'name': 'ringo', 'job': 'drums', 'status': 'alive'}
]
0 голосов
/ 08 сентября 2018

Я думаю, это то, что вы ищете:

>>> names = ["john", "paul", "george", "ringo"]
>>> job = ["guitar", "bass", "guitar", "drums"]
>>> status = ["dead", "alive", "dead", "alive"]
>>> persons = []
>>> for n, j, s in zip(names, job, status):
...    person = { 'name': n, 'job': j, 'status': s }
...    persons.append(person)
...
>>> persons
[{'status': 'dead', 'job': 'guitar', 'name': 'john'}, {'status': 'alive', 'job': 'bass', 'name': 'paul'}, {'status': 'dead', 'job': 'guitar', 'name': 'george'}, {'status': 'alive', 'job': 'drums', 'name': 'ringo'}]
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...