映射多个列表以在python中创建(键,值)对

时间:2017-11-09 14:56:04

标签: python python-2.7

key  = ["id","name","sal"]
id   = [1,2,3,4]
info = [["John",1000], ["Joel",5000], ["Tom",2000],["Ray",1000]]

在python(词典列表)中生成以下输出的最简单方法是什么?

[{id=1,name="John",sal=1000},
 {id=2,name="Joel",sal=5000},
 {id=3,name="Tom",sal=2000},
 {id=4,name="Ray",sal=1000}]

4 个答案:

答案 0 :(得分:3)

您可以使用zip

key_list = ['name','id']
name_list = ['John', 'Tom', 'David','Joel','Liza']
id_list = [1,2,3,4,5]
final_data = [{key_list[0]:a, key_list[1]:b} for a, b in zip(name_list, id_list)]

输出:

[{'name': 'John', 'id': 1}, {'name': 'Tom', 'id': 2}, {'name': 'David', 'id': 3}, {'name': 'Joel', 'id': 4}, {'name': 'Liza', 'id': 5}]

答案 1 :(得分:3)

您可以zip名称和ID列表,并使用键列表再次压缩这些元组。

>>> [dict(zip(key_list, pair)) for pair in zip(name_list, id_list)]
[{'name': 'John', 'id': 1},
 {'name': 'Tom', 'id': 2},
 {'name': 'David', 'id': 3},
 {'name': 'Joel', 'id': 4},
 {'name': 'Liza', 'id': 5}]

这也适用于任意数量的键和属性列表。

>>> attributes = [name_list, id_list] # and maybe more
>>> [dict(zip(key_list, pair)) for pair in zip(*attributes)]

答案 2 :(得分:0)

您可以使用zip并合并名称和ID列表,并使用键列表再次压缩这些元组。这应该适合您的要求,

key_list = ['name', 'id']
name_list = ['John', 'Tom', 'David', 'Joel', 'Liza']
id_list = [1, 2, 3, 4, 5]
data =  [dict(zip(key_list, (a,b))) for a,b in zip(name_list, id_list)]

输出应该是,

[{'name': 'John', 'id': 1}, {'name': 'Tom', 'id': 2}, {'name': 'David', 'id': 3}, {'name': 'Joel', 'id': 4}, {'name': 'Liza', 'id': 5}]

答案 3 :(得分:0)

我认为我的解决方案是根据输出格式

[{'{}={}'.format(key_list[0],a),'{}={}'.format(key_list[1],b)} for a, b in zip(name_list, id_list)]

输出

 [{'id=1', 'name=John'},
 {'id=2', 'name=Tom'},
 {'id=3', 'name=David'},
 {'id=4', 'name=Joel'},
 {'id=5', 'name=Liza'}]