Python 创建具有两个或多个属性的列表
假设我有这本字典,我想要一份姓名和身份证的清单Python 创建具有两个或多个属性的列表,python,list-comprehension,Python,List Comprehension,假设我有这本字典,我想要一份姓名和身份证的清单 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']用于d中的item]这里有一
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']用于d中的item
]这里有一种方法,使用嵌套循环从每个dict字段添加项:
items = [x for dct in d for x in (dct['name'], dct['id'])]
下面是一种使用嵌套循环从每个dict字段添加项目的方法:
items = [x for dct in d for x in (dct['name'], dct['id'])]
您可以使用
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]
您可以使用
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]
注意必须将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)]
注意必须将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)]
你可以这么做是的。。。。如果
项是一个由2个列表或2个元组组成的列表来保持结构,不是更有意义吗?(或者这就是你想要做的-因为你只需要在项目周围()
或[]
来做)它看起来很奇怪,但它很有意义,因为我用它来创建一个包含术语的大数组,然后我可以在前端应用一些搜索逻辑,这就是为什么我不需要保留结构。你可以这样做是的。。。。如果项是一个由2个列表或2个元组组成的列表来保持结构,不是更有意义吗?(或者这就是你想要做的——因为你只需要在项目周围使用()
或[]
就可以做到这一点)它看起来很奇怪,但它很有意义,因为我用它来创建一个大数组,其中包含一些术语,然后我可以在前端应用一些搜索逻辑,这就是为什么我不需要保留结构的原因