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

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

處理 Python 腳本中的索引位置以從 json 文件中刪除 json 對象

處理 Python 腳本中的索引位置以從 json 文件中刪除 json 對象

Smart貓小萌 2023-09-02 16:27:36
我有一個文件(my_file.json),其內(nèi)容如下;[            {                "use":"abcd",                "contact":"xyz",                "name":"my_script.py",                "time":"11:22:33"             },            {                "use":"abcd"                "contact":"xyz",                "name":"some_other_script.py",                "time":"11:22:33"             },            {                "use":"apqwkndf",                "contact":"xyz",                "name":"my_script.py",                "time":"11:22:33"             },            {                "use":"kjdshfjkasd",                "contact":"xyz",                "name":"my_script.py",                "time":"11:22:33"             }]我使用以下 python 代碼刪除具有“name”的對象:“my_script.py”,#!/bin/usr/pythonimpoty jsonobj = json.load(open("my_file.json"))index_list = []for i in xrange(len(obj)):     if obj[i]["name"] == ["my_script.py"]      index_list.append(i)for x in range(len(index_list)):      obj.pop(index_list[x])open("output_my_file.json","w".write(json.dumps(obj, indent=4, separators=(',',': ')))但似乎我被卡住了,因為彈出索引后,實際 obj 中的索引位置發(fā)生了變化,這導(dǎo)致錯誤的索引刪除或有時彈出索引超出范圍。還有其他解決方案嗎?
查看完整描述

5 回答

?
呼啦一陣風(fēng)

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

嘗試以相反的順序彈出:

for x in reversed(range(len(index_list))):


查看完整回答
反對 回復(fù) 2023-09-02
?
PIPIONE

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

import json

with open('my_file.json') as f:

    data = json.load(f)


data = [item for item in data if item.get('name') != 'my_script.py']


with open('output_my_file.json', 'w') as f:

    json.dump(data, f, indent=4)


查看完整回答
反對 回復(fù) 2023-09-02
?
猛跑小豬

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

作為一般經(jīng)驗法則,您通常不想在迭代可迭代對象時對其進(jìn)行更改。我建議你在第一個循環(huán)中保存你想要的元素:


import json


with open('path/to/file', 'r') as f:

    data = json.load(f)


items_to_keep = []

for item in data:

    if item['name'] != 'my_script.py':

        items_to_keep.append(item)


with open('path/to/file', 'w') as f:

    json.dump(items_to_keep, f, ...)

過濾可以簡化為一行(稱為列表理解)


import json


with open('path/to/file', 'r') as f:

    data = json.load(f)


items_to_keep = [item for item in data if item['name'] != 'my_script.py']


with open('path/to/file', 'w') as f:

    json.dump(items_to_keep, f, ...)


查看完整回答
反對 回復(fù) 2023-09-02
?
冉冉說

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

嘗試:


    import json


    json_file = json.load(open("file.json"))


    for json_dict in json_file:

        json_dict.pop("name",None)

    print(json.dumps(json_file, indent=4))

你不需要最后一行“json.dumps”,我只是把它放在那里,這樣打印時看起來更易讀。


查看完整回答
反對 回復(fù) 2023-09-02
?
ABOUTYOU

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

這將創(chuàng)建一個新列表,并僅將那些沒有的列表分配"name": "my_script.py"到新列表中。

obj = [i for i in obj if i["name"] != "my_script.py"]


查看完整回答
反對 回復(fù) 2023-09-02
  • 5 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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