Python 将值附加到json对象列表中
我正在收集天气数据,并试图创建一个列表,以分钟为单位显示最新的(温度)值 我想将它们添加到一个列表中,如果该列表不包含“分钟索引”,则应将其作为列表中的新元素。因此,列表始终保持每分钟的最新温度值:Python 将值附加到json对象列表中,python,json,list,Python,Json,List,我正在收集天气数据,并试图创建一个列表,以分钟为单位显示最新的(温度)值 我想将它们添加到一个列表中,如果该列表不包含“分钟索引”,则应将其作为列表中的新元素。因此,列表始终保持每分钟的最新温度值: def AddValue(arr, value): timestamp = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M") for v in arr['values']: try:
def AddValue(arr, value):
timestamp = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M")
for v in arr['values']:
try:
e = v[timestamp] # will trigger the try/catch if not there
v[timestamp] = value
except KeyError:
v.append({ timestamp: value })
history = [
{ 'values': [ {'2017-12-22 10:20': 1}, {'2017-12-22 10:21': 2}, {'2017-12-22 10:22': 3} ] },
]
AddValue(history, 99)
然而,我越来越
AttributeError: 'dict' object has no attribute 'append'**
将字典d
中的键k
与值v
关联为:
d[k] = v
无论字典中是否已存在键k
,此功能都有效。如果发生这种情况,该值将被“覆盖”。因此,我们可以将for
循环重写为:
for v in arr['values']:
v[timestamp] = value
这在语义上是相同的,但需要更多的计算工作
然而,由于您需要迭代字典,您可能应该重新考虑构建数据的方式。您将字典中的键k
与值v
关联d
:
d[k] = v
无论字典中是否已存在键k
,此功能都有效。如果发生这种情况,该值将被“覆盖”。因此,我们可以将for
循环重写为:
for v in arr['values']:
v[timestamp] = value
这在语义上是相同的,但需要更多的计算工作
尽管如此,由于您需要迭代字典,您可能应该重新考虑数据的结构化方式。如果您必须迭代字典,那么字典有什么意义?此外,您正在动态创建时间戳。密钥已经存在的可能性有多大?我不明白为什么要触发,除非密钥不存在。此外,我不明白这与JSON有什么关系。对于arr['values']中的v:不要认为它有效,因为您的历史记录是列表。如果必须迭代字典,它有什么意义?此外,您正在动态创建时间戳。密钥已经存在的可能性有多大?我不明白为什么要触发,除非密钥不存在。此外,我不知道这与JSON有什么关系。对于arr['values']中的v:不要认为它有效,因为您的历史记录是列表。。