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

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

Python 從 json 字典中刪除不起作用

Python 從 json 字典中刪除不起作用

慕森卡 2023-07-27 17:53:47
當(dāng)我調(diào)用此函數(shù)從 json 導(dǎo)入的字典中刪除項目時,它不起作用def removeKey(key):    with open ("keys.json") as f:        data  = json.loads(f.read())        for d in data["keys"]:            if(d["key"] == key):                del d    print(data)    with open ("keys.json", "w") as f:        json.dump(data, f)這就是 JSON 中字典的設(shè)置方式{"keys": [    {"key": 1599853953652, "role": "MODERATOR", "Server": 753230650181550141, "uses": 1, "maxuses": 0}    ]}
查看完整描述

4 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

看起來您實際上想刪除字典列表中的任何字典,"keys"如果它們的條目值"key"與某個數(shù)字匹配(例如1599853953652)。


假設(shè)是這種情況,最干凈的方法實際上是創(chuàng)建一個新列表來過濾掉不需要的條目;您不能del在迭代時簡單地調(diào)用來刪除元素。


data = json.loads(f.read())

filtered_keys = [d for d in data["keys"] if d["key"] != key]

data["keys"] = filtered_keys


查看完整回答
反對 回復(fù) 2023-07-27
?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

刪除“角色” - 一個班輪演示


data = {"keys": [

    {"key": 1599853953652, "role": "MODERATOR", "Server": 753230650181550141, "uses": 1, "maxuses": 0}

    ]

}


data['keys'][0].pop('role',None)

print(data)

輸出


{'keys': [{'key': 1599853953652, 'Server': 753230650181550141, 'uses': 1, 'maxuses': 0}]}



查看完整回答
反對 回復(fù) 2023-07-27
?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

使用del d僅刪除變量d,但不會影響要從中刪除的列表。您需要對列表本身進行操作。我會使用該pop()方法,盡管del也可以。


def removeKey(key):

    with open ("keys.json") as f:

        data = json.loads(f.read())

        for i, d in enumerate(data["keys"]):

            if d["key"] == key:

                data["keys"].pop(i)


    print(data)


    with open ("keys.json", "w") as f:

        json.dump(data, f)


查看完整回答
反對 回復(fù) 2023-07-27
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

for d in data["keys"]:

    if(d["key"] == key):

        del d

del刪除名字。刪除名稱不會刪除關(guān)聯(lián)的值,除非它是該值的唯一名稱。


該for d in ...循環(huán)創(chuàng)建為 的d附加名稱data["keys"]["key"]。當(dāng)您刪除時del d,您只是刪除了名稱,而沒有d刪除其中的值。data


這相當(dāng)于:


x = 1

y = x

del y

運行此代碼后,x仍然存在。 del y剛剛刪除了名字 y。


換句話說,想象一下貼在盒子上的便利貼。便利貼是名稱,方框是值。一個盒子上可以貼有許多便條,移除一張便條并不會破壞盒子(除非它是唯一的便條)。


查看完整回答
反對 回復(fù) 2023-07-27
  • 4 回答
  • 0 關(guān)注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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