簡體   English   中英

將值附加到json對象列表

[英]Append values to a list of json objects

我正在收集天氣數據,並嘗試創建一個按分鍾顯示最新(溫度)值的列表。

我想將它們添加到列表中,如果列表中不包含“分鍾索引”,則應將其作為列表中的新元素。 因此,列表始終保持每分鍾的最新溫度值:

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

for v in arr['values']:
    v[timestamp] = value

如果要使用多個鍵更新字典,則可以使用.update並傳遞字典對象,或者將命名參數作為鍵(並將相應的值作為value)。 所以我們可以這樣寫:

for v in arr['values']:
    v.update({timestamp: value})

在語義上是相同的,但是需要更多的計算工作。

但是,由於您需要遍歷字典,因此您也許應該重新考慮構造數據的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM