我们假设以下内容:
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}
换句话说,我希望我可以通过100因子迭代数组和多个v。
以下仅对第一项执行乘法运算,即得到54000:
for i, a in enumerate(sp_sample):
a[i]['v'] = a[i]['v'] * 100
sp_sample
是元组类型。使用以下产生整个数组,这不是我所期望的:
print sp_sample[0]
另外,尝试打印sp_sample:
print sp_sample
返回以下内容(为了简洁而替换了.......)
([{'t': 1434946093036, 'v': 54.0}, {'t': 1434946095013, 'v': 53.0}, {'t': 1434946096823, 'v': 52.0}, {'t': 1434946098612, 'v': 52.0}, {'t': 1434946100400, 'v': 51.0}, {'t': 1434946102372, 'v': 49.0},........, {'t': 1434947987823, 'v': 15.0}, {'t': 1434947989851, 'v': 12.0}, {'t': 1434947991899, 'v': 10.0}, {'t': 1434947993744, 'v': 5.0}, {'t': 1434947995599, 'v': 0.0}, {'t': 1434947997455, 'v': 0.0}, {'t': 1434947999494, 'v': 0.0}, {'t': 1434948001542, 'v': 0.0}, {'t': 1434948003417, 'v': 0.0}, {'t': 1434948005264, 'v': 0.0}, {'t': 1434948007120, 'v': 0.0}],)
print type(sp_sample)返回:
答案 0 :(得分:8)
只需遍历列表并随时更新字典:
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}]
这将依次绑定列表中的每个字典(元组?)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