如何修改Python JSON对象数组

如何修改Python JSON对象数组,python,arrays,json,python-2.7,Python,Arrays,Json,Python 2.7,让我们假设如下: sp_sample=[{"t":1434946093036,"v":54.0},{"t":1434946095013,"v":53.0},{"t":1434946096823,"v":52.0} 我希望我能得到以下结果: sp_sample=[{"t":1434946093036,"v":5400.0},{"t":1434946095013,"v":5300.0},{"t":1434946096823,"v":5200.0} 换句话说,我希望我可以遍历数组并将v乘以100因

让我们假设如下:

sp_sample=[{"t":1434946093036,"v":54.0},{"t":1434946095013,"v":53.0},{"t":1434946096823,"v":52.0}
我希望我能得到以下结果:

sp_sample=[{"t":1434946093036,"v":5400.0},{"t":1434946095013,"v":5300.0},{"t":1434946096823,"v":5200.0}
换句话说,我希望我可以遍历数组并将v乘以100因子

以下仅对第一项执行乘法运算,即得出54000:

for i, a in enumerate(sp_sample):
    a[i]['v'] =  a[i]['v'] * 100
sp_样本
属于tuple类型。使用以下方法可以生成整个阵列,这不是我所期望的:

print sp_sample[0]
另外,尝试打印sp_示例:

print sp_sample
返回以下内容(为简洁起见,替换了……):

打印类型(sp_样本)返回:

只需在列表上迭代,并在运行时更新词典:

sp_sample = [{"t":1434946093036,"v":54.0},{"t":1434946095013,"v":53.0},{"t":1434946096823,"v":52.0}]

for d in sp_sample:
    d['v'] *= 100

>>> print(sp_sample)
[{'t': 1434946093036, 'v': 5400.0}, {'t': 1434946095013, 'v': 5300.0}, {'t': 1434946096823, 'v': 5200.0}]
这将依次将列表(tuple?
sp_sample
中的每个字典绑定到
d
,然后您将其就地更新。您不需要使用
enumerate()

请注意,您确实需要乘以100,而不是10000,才能获得所显示的输出


更新

sp_sample
实际上是一个元组,其唯一项是字典列表。因此,您需要访问元组中的列表,如下所示:

sp_sample = ([{"t":1434946093036,"v":54.0},{"t":1434946095013,"v":53.0},{"t":1434946096823,"v":52.0}],)

for d in sp_sample[0]:    # N.B. access first item of tuple
    d['v'] *= 100
>>> print(sp_sample)
[{'t': 1434946093036, 'v': 5400.0}, {'t': 1434946095013, 'v': 5300.0}, {'t': 1434946096823, 'v': 5200.0}]
或者,由于元组只包含一个项目,您可以通过以下方式除去元组:

sp_sample = sp_sample[0]
for d in sp_sample:
    d['v'] *= 100

Python返回以下内容:Traceback(最近一次调用last):文件“/gear_add_10.py”,第20行,在d['v']*=100 TypeError中:列表索引必须是整数,而不是strThen
sp_sample
是一个列表列表,而不是一个字典列表,正如您所问的示例数据所期望的那样。也许您可以在进入更新循环之前尝试打印
sp_sample
的值,并仔细检查数据类型。如果
sp_sample
实际上是一个列表列表,那么您需要将sp_sample中的item的代码更改为
:item[1]*=100`。我觉得根据Python,数组只有一个项目长,看起来它无法理解嵌入的对象。从更新到您的问题,您似乎有一个包含单个列表项目的元组,即字典列表。因此,在sp_sample[0]:d['v']*=100中将代码更改为:
,应该可以解决这个问题。
sp_sample = sp_sample[0]
for d in sp_sample:
    d['v'] *= 100