首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中映射多个列表以创建(键、值)对

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

Stack Overflow用户
提问于 2017-11-09 22:56:04
回答 4查看 4.6K关注 0票数 0
代码语言:javascript
运行
复制
key  = ["id","name","sal"]
id   = [1,2,3,4]
info = [["John",1000], ["Joel",5000], ["Tom",2000],["Ray",1000]]

用python(字典列表)生成下面的输出最简单的方法是什么?

代码语言:javascript
运行
复制
[{id=1,name="John",sal=1000},
 {id=2,name="Joel",sal=5000},
 {id=3,name="Tom",sal=2000},
 {id=4,name="Ray",sal=1000}]
EN

回答 4

Stack Overflow用户

发布于 2017-11-09 23:00:59

您可以使用zip

代码语言:javascript
运行
复制
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)]

输出:

代码语言:javascript
运行
复制
[{'name': 'John', 'id': 1}, {'name': 'Tom', 'id': 2}, {'name': 'David', 'id': 3}, {'name': 'Joel', 'id': 4}, {'name': 'Liza', 'id': 5}]
票数 3
EN

Stack Overflow用户

发布于 2017-11-09 23:02:45

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

代码语言:javascript
运行
复制
>>> [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}]

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

代码语言:javascript
运行
复制
>>> attributes = [name_list, id_list] # and maybe more
>>> [dict(zip(key_list, pair)) for pair in zip(*attributes)]
票数 3
EN

Stack Overflow用户

发布于 2017-11-09 23:05:58

您可以使用zip将名称和id列表组合在一起,并使用键列表再次压缩这些元组。这应该可以满足您的需求,

代码语言:javascript
运行
复制
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)]

输出应如下所示:

代码语言:javascript
运行
复制
[{'name': 'John', 'id': 1}, {'name': 'Tom', 'id': 2}, {'name': 'David', 'id': 3}, {'name': 'Joel', 'id': 4}, {'name': 'Liza', 'id': 5}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47204966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档