首页 > 解决方案 > 使用列表推导一次定义两个对象

问题描述

我有一个字典列表,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)。

标签: python

解决方案


使用zip

list_id, list_name = zip(*[(a['id'], a['name']) for a in list_dic])

推荐阅读