创建具有两个或更多属性的列表推导

时间:2017-10-02 11:39:50

标签: python list-comprehension

假设我有这个字典,我想要一个名字和id列表。

d = [{'name': 'testtt', id: 1, 'stuff': 123}, {'name': 'test', id: 2, 'stuff', 123}]

我能做到:

items = []

for item in d:
    items.append(d['name'])
    items.append(d['id'])

可以在相同的列表理解中完成吗?

这样的事情:

items = [item['name'], item['id'] for item in d]

3 个答案:

答案 0 :(得分:1)

这是使用嵌套循环从每个dict字段添加项目的一种方法:

items = [x for dct in d for x in (dct['name'], dct['id'])]

答案 1 :(得分:1)

您可以使用itertools

d = [{'name': 'testtt', 'id': 1, 'stuff': 123}, {'name': 'test', 'id': 2, 'stuff':123}]
from itertools import chain
new_d  = list(chain.from_iterable([(i["name"], i["id"]) for i in d]))

输出:

['testtt', 1, 'test', 2]

答案 2 :(得分:1)

注意必须将id 更改为字符串,否则它会引用内置id函数。你可以这样做

d = [{'name': 'testtt', 'id': 1, 'stuff': 123}, {'name': 'test', 'id': 2, 'stuff': 123}]

items = map(lambda x: (x['name'], x['id']), d)


>>> items
[('testtt', 1), ('test', 2)]