簡體   English   中英

如何將JSON值放入列表Python

[英]How to put JSON values into a list Python

我有一個看起來像這樣的json列表:

{
    "callback": [{
            "id": "R_puFk4fZ8m1lE4bD",
            "set": "Default Response Set",
            "ace": "asdf",
            "date": "asdfdsa",
            "1": "asdf",
            "2": "s",
            "3": "3",
            "4": "1",
            "zone": "0",
            "long": "33.564498901367",
            "lat": "-112.00869750977"
        }
    ]
}

我的實際數據在列表中有很多json對象,我想知道如何將json中的“ date”和“ zone”之間的數字放在單獨的列表中。 這些數字在json對象之間有所不同,但始終在“ date”和“ zone”值之間。

我將如何將其轉換為:

{
    "callback": [{
            "id": "R_puFk4fZ8m1lE4bD",
            "set": "Default Response Set",
            "ace": "asdf",
            "date": "asdfdsa",
            "Q": [
                "1": "asdf",
                "2": "s",
                "3": "3",
                "4": "1"
            ],
            "zone": "0",
            "long": "33.564498901367",
            "lat": "-112.00869750977"
        }
    ]
}

您可以通過集合成員資格對其進行分類(如PM 2Ring所述,集合成員身份的速度更快O(1)):

def group_questions(source_dct):
    meta_tags = {"id", "set", "ace", "date", "zone", "long", "lat"}

    result_dct = {"Q": {}}
    for key in source_dct:
        if key not in meta_tags:
            result_dct["Q"][key] = source_dct[key]
        else:
            result_dct[key] = source_dct[key]
    return result_dct

結果(注釋字典未排序):

>>> print group_questions(dct)
{'set': 'Default Response Set', 
 'ace': 'asdf', 
 'zone': '0', 
 'long': '33.564498901367', 
 'Q': {'1': 'asdf', 
       '3': '3', 
       '2': 's', 
       '4': '1'}, 
 'lat': '-112.00869750977', 
 'date': 'asdfdsa', 
 'id': 'R_puFk4fZ8m1lE4bD'}

使用內置的int()函數檢查整數鍵:

new_list = []
for old_data in old_list: #old_list is the value of 'callback' key
    data = {'Q': {}}
    for key in old_data.keys():
        try:
            num = int(key)
            data['Q'][key] = old_data[key]
        except ValueError: # stringy keys
            data[key] = old_data[key]
    new_list.append(data)

現在,使用json.dumps()類的json.dumps()打印new_list會得到類似以下內容:

[
    {
        "Q": {
            "1": "asdf",
            "2": "s",
            "3": "3",
            "4": "1"
        },
        "id": "R_puFk4fZ8m1lE4bD",
        "set": "Default Response Set",
        "ace": "asdf",
        "date": "asdfdsa",
        "zone": "0",
        "long": "33.564498901367",
        "lat": "-112.00869750977"
    }
]

暫無
暫無

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

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