Python将多个列表转换为字典

时间:2018-09-08 20:22:08

标签: python list dictionary

我有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 :(得分:4)

我认为您想要的是字典列表。您可以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'}
]

答案 1 :(得分:1)

我认为这就是您想要的:

>>> 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'}]
>>>