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:不要认为它有效,因为您的历史记录是列表。。