简体   繁体   English

Python将多个列表转换为字典

[英]Python convert multiple lists to dictionary

I have 3 lists:我有 3 个列表:

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

I am trying to figure out the best way to combine these lists into a dict like the following:我试图找出将这些列表组合成如下字典的最佳方法:

{"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"}}

I have tried using dict(zip) but cannot get it to format like above.我曾尝试使用 dict(zip) 但无法将其格式化为上述格式。

Thanks in advance!提前致谢!

I think what you want is a list of dictionaries.我认为您想要的是字典列表。 You can zip your three lists together and use a list comprehension.您可以将三个列表zip在一起并使用列表理解。 Here's an example:这是一个例子:

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

(also renaming your job to jobs and status to statuses ) (也将您的job重命名为jobsstatus重命名为statuses

Which will give you:这会给你:

[
  {'name': 'john', 'job': 'guitar', 'status': 'dead'},
  {'name': 'paul', 'job': 'bass', 'status': 'alive'},
  {'name': 'george', 'job': 'guitar', 'status': 'dead'},
  {'name': 'ringo', 'job': 'drums', 'status': 'alive'}
]

I think this is what you are looking for:我认为这就是你要找的:

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

Try this approach:试试这个方法:

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

two step process:两步过程:

description =[{'job': j, 'status': s} for j,s in zip(job,status)]
artist ={n: i for n,i in zip(names,description)}}

final output:最终输出:

print(artist)

{'john': {'job': 'guitar', 'status': 'dead'},
 'paul': {'job': 'bass', 'status': 'alive'},
 'george': {'job': 'guitar', 'status': 'dead'},
 'ringo': {'job': 'drums', 'status': 'alive'}}

you can then do something like this:然后你可以做这样的事情:

artist['ringo']['job']

output:输出:

'drums'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM