在Python中转换列表中的词典

在Python中转换列表中的词典,python,django,Python,Django,我想从id属性中获取数据,并在列表中进行转换 queryset = [{"id":1,"name":"John"},{"id":2,"name":"John"}] 预期结果 ('1','2') ## ID PROPERTY 迭代字典并将每个键id为的值添加到新列表中: queryset = [{"id":1,"name":"John"},{"id":2,"name":"John"}] result = [] for item in queryset: result.append

我想从id属性中获取数据,并在列表中进行转换

queryset = [{"id":1,"name":"John"},{"id":2,"name":"John"}]
预期结果

('1','2')  ## ID PROPERTY

迭代字典并将每个键id为的值添加到新列表中:

queryset = [{"id":1,"name":"John"},{"id":2,"name":"John"}]

result = []

for item in queryset:
    result.append(str(item['id']))
映射queryset中的每个值并转换为元组:

tuple(map(lambda x: str(x['id']), queryset))

因为这是用Django标记的,所以我假设查询集实际上是一个Django QuerySet对象

如果是这样,那么使用ORM有一个简单的解决方案:


要符合您的实际要求:

[d["id"] for d in queryset]
要获得与问题不匹配的预期结果,因为ID已转换为字符串,并且最终结果实际上是一个元组,而不是列表,请执行以下操作:

tuple(str(d["id"]) for d in queryset)
但由于它可能与Django有关,最好的解决方案是Iain Shelvington提供的:


@拉贾西蒙,嗯?除了列表与生成器的问题外,您的更好。是否确实要将数字更改为字符串?结果是一个元组,而不是一个列表?到目前为止你尝试了什么?一些示例代码可能有助于我们更好地理解您的问题。抱歉,这是我需要的列表,而不是元组,我的预期结果是整数或字符串形式的[1,2]。速度如何?原始答案生成一个列表,然后将其转换为元组。修改删除了生成列表的中间步骤,该步骤更快,占用的内存更少。此外,列表理解往往比生成器更快。请提供证据证明你的更快。以下是我的证据,证明你的回答比较慢:我不认为这是一个“粗鲁”的回答。这是处理问题的另一种方式,可以说更具“django-istic”可读性。在我看来,这是一个有效的、恰当的答案。谢谢你们,我只是改成了列表,效果很好。
[d["id"] for d in queryset]
tuple(str(d["id"]) for d in queryset)
queryset.values_list('id', flat=True)