第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 從json數(shù)組中刪除多余的鍵值

python 從json數(shù)組中刪除多余的鍵值

蕪湖不蕪 2023-10-18 21:06:08
我有一個包含對象數(shù)組的 json 文件,文件內(nèi)的數(shù)據(jù)如下所示:[ {‘name’: ‘A’, ‘a(chǎn)ddress’: ‘some address related to A’, ‘details’: ‘some details related to A’}, {‘name’: ‘B’, ‘a(chǎn)ddress’: ‘some address related to A’, ‘details’: ‘some details related to B’}, {‘name’: ‘C’, ‘a(chǎn)ddress’: ‘some address related to A’, ‘details’: ‘some details related to C’}]我想刪除多余的鍵值,所以輸出應(yīng)該是這樣的:  [   {‘name’: ‘A’,   ‘a(chǎn)ddress’: ‘some address related to A’,   ‘details’: ‘some details related to A’},   {‘name’: ‘B’,   ‘details’: ‘some details related to B’},   {‘name’: ‘C’,   ‘details’: ‘some details related to C’}  ]所以,我嘗試過這段代碼,在此鏈接中找到了它:import jsonwith open(‘./myfile.json’) as fp:    data= fp.read()  unique = []for n in data:    if all(unique_data["address"] != data for unique_data["address"] in unique):        unique.append(n)#print(unique)   with open(“./cleanedRedundancy.json”, ‘w’) as f:     f.write(unique)但它給了我這個錯誤:TypeError: string indices must be integers
查看完整描述

1 回答

?
動漫人物

TA貢獻(xiàn)1815條經(jīng)驗 獲得超10個贊

我做了有/沒有文件支持的解決方案,默認(rèn)情況下沒有,對于您的情況,支持文件更改use_files = Falseuse_files = True我的腳本內(nèi)部。

我預(yù)計您想要刪除具有相同(鍵,值)對的重復(fù)項。

在線嘗試一下!

import json


use_files = False

# Only duplicates with next keys will be deleted

only_keys = {'address', 'complex'}


if not use_files:

    fdata = """

    [

     {

       "name": "A",

       "address": "some address related to A",

       "details": "some details related to A"

     },

     {

       "name": "B",

       "address": "some address related to A",

       "details": "some details related to B",

       "complex": ["x", {"y": "z", "p": "q"}],

       "dont_remove": "test"

     },

     {

       "name": "C",

       "address": "some address related to A",

       "details": "some details related to C",

       "complex": ["x", {"p": "q", "y": "z"}],

       "dont_remove": "test"

     }

    ]

    """


if use_files:

    with open("./myfile.json", 'r', encoding = 'utf-8') as fp:

        data = fp.read()

else:

    data = fdata


entries = json.loads(data)


unique = set()

for e in entries:

    for k, v in list(e.items()):

        if k not in only_keys:

            continue

        v = json.dumps(v, sort_keys = True)

        if (k, v) in unique:

            del e[k]

        else:

            unique.add((k, v))


if use_files:

    with open("./cleanedRedundancy.json", "w", encoding = 'utf-8') as f:

        f.write(json.dumps(entries, indent = 4, ensure_ascii = False))

else:

    print(json.dumps(entries, indent = 4, ensure_ascii = False))

輸出:


[

    {

        "name": "A",

        "address": "some address related to A",

        "details": "some details related to A"

    },

    {

        "name": "B",

        "details": "some details related to B",

        "complex": [

            "x",

            {

                "y": "z",

                "p": "q"

            }

        ],

        "dont_remove": "test"

    },

    {

        "name": "C",

        "details": "some details related to C",

        "dont_remove": "test"

    }

]


查看完整回答
反對 回復(fù) 2023-10-18
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號