python - 使用列表推导一次定义两个对象
问题描述
我有一个字典列表,list_dic
每个字典都包含键id;name
。我想从这些键中创建两个列表。
我想为此任务使用列表理解,例如
list_id = [a['id'] for a in list_dic]
list_name = [a['name'] for a in list_dic]
这里的问题是我循环了两次,这可能不是一件聪明的事情。
有没有办法只使用一次列表理解循环?
# Pseudo
list_id, list_name = [a['id'], a['name'] for a in list_dic]
附言
我试过helper = [[a['id'], a['name']] for a in list_dic]
几乎可以工作。问题是子集似乎需要再次循环(我希望类似的东西helper[:][0]
会提供 all ids
)。
解决方案
使用zip
:
list_id, list_name = zip(*[(a['id'], a['name']) for a in list_dic])
推荐阅读
- sql - 什么会导致 SQL equery 在相同的软件和硬件的不同 Oracle 机器上运行显着更长的时间
- python - 部署 pyqt5
- pycharm - 如何将 OpenVino setupvars.sh 添加到 PyCharm 项目中?
- javascript - ReactJS - 禁用组件
- javascript - 如何以更高效且错误更少的方式获取实时 json 数据?
- r - 在两个时间戳之间左加入 R
- ionic-framework - 离子头 - 有必要吗?如何使其滚动而不是固定
- python - 将 3D 切片绘制为热图
- r - 为什么'fill ='函数在ggplots中的boxplot中不起作用?
- scala - Monad for-comprehensions with implicit Monad 失败,使用继承?