将每个对象的字典从数组迭代并追加到新数组?

金克里斯

在python中,如何将每个对象的字典从数组中迭代并追加到新数组中(用于序列化数据以在GET请求中返回json)?现有迭代将返回数组中最后一个对象的重复项,如下面的当前结果所示,并且不在下面打印预期的结果。

注意:

我正在使用SQLAlchemy的.get.all()来获取初始消息,但它们不能以JSON序列化,所以我试图远离诸如棉花糖之类的库。.jsonify(response)json.dumps(response)抛出错误。

message = [
        {
            'id': 1,
            'message': the first message,
        },
        {
            'id': 2,
            'message': the second message
        }
    ]

response = []
row_data = {}

for message in messages:
    for k, v in message.items():
        row_data[k] = str(v)
    response.append(row_data)
print(response)

当前响应:

[
    {
        'id': '2',
        'message': 'the second message',
    },
    {
        'id': '2',
        'message': 'the second message'
    }
]

预期的响应:

[
    {
        'id': '1',
        'message': 'the first message',
    },
    {
        'id': '2',
        'message': 'the second message'
    }
]
吓坏了

这里的问题是您没有断开与row_data要附加到的字典的连接response

因此,在第一次迭代之后,row_data仍然指向与response列表中第一个元素相同的字典然后,您修改存储在字典中的值,并第二次追加。此修改更改了字典,但是由于您对同一个字典有两个引用,因此您认为要获取数据的两个副本,而实际上不是。

此问题类似于“可变默认参数”问题,因为单个收集项在不应使用的情况下被重用。

作为解决方案,我建议在循环内移动初始化程序。每次将创建一个新字典:

for message in messages:
    row_data = {}
    for k, v in message.items():
        row_data[k] = str(v)
    response.append(row_data)

更好的解决方案是使用其他机制来创建字典。您要做的只是复制项目,因此请考虑使用dict.copy()方法或dict()构建器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将1加到数组的每个元素

来自分类Dev

jQuery迭代字典数组

来自分类Dev

如何使用Javascript将迭代器索引号附加到数组中的每个项目?

来自分类Dev

使用forEach()将数组追加到对象中

来自分类Dev

Swift:如何将字典数组添加到数组?

来自分类Dev

Javascript将数组追加到对象数组

来自分类Dev

Python将字典项追加到字典中的数组

来自分类Dev

如果对象值在javascript中为true,则迭代数组提取并添加到新列表

来自分类Dev

jQuery将元素追加到对象数组

来自分类Dev

“ TypeError:散布不可迭代实例的无效尝试”:将数组或对象添加到数组

来自分类Dev

将字典理解的每个迭代存储在新的嵌套字典中

来自分类Dev

每次迭代将值追加到数组

来自分类Dev

将事件附加到数组的每个元素

来自分类Dev

将列追加到数组

来自分类Dev

灰烬对可枚举数组进行排序或将新对象添加到常规数组

来自分类Dev

是否可以迅速将新对象追加到异构数组?

来自分类Dev

jQuery迭代字典数组

来自分类Dev

如何使用Javascript将迭代器索引号附加到数组中的每个项目?

来自分类Dev

如何将数组追加到Swift字典中的值

来自分类Dev

在Swift中将字典类型追加到数组

来自分类Dev

延迟将新对象添加到循环中的数组

来自分类Dev

将数组对象添加到对象

来自分类Dev

在数组的深层嵌套字典中追加到数组

来自分类Dev

将数组追加到数组

来自分类Dev

Python将字典项追加到字典中的数组

来自分类Dev

Javascript:迭代对象数组并形成新数组

来自分类Dev

将字典数组添加到字典数组

来自分类Dev

Swift 将数组追加到数组

来自分类Dev

如何将数组添加到列表并迭代以获取每个数组的第一个值?

Related 相关文章

热门标签

归档