2017-10-17 106 views
0

我有一個包含大寫和國家的JSON文件。如何刪除特定的鍵值對?從JSON文件中刪除項目

我有以下的JSON文件

{ 
    "data": [ 
    { 
     "Capital": "Berlin", 
     "Country": "Germany" 
    }, 
    { 
     "Capital": "New Delhi", 
     "Country": "India" 
    }, 
    { 
     "Capital": "Canberra", 
     "Country": "Australia" 
    }, 
    { 
     "Capital": "Beijing.", 
     "Country": "China" 
    }, 
    { 
     "Capital": "Tokyo", 
     "Country": "Japan" 
    } 
    ] 

} 

我想刪除某個項目

{ 
    "Capital": "Canberra", 
    "Country": "Australia" 
} 

我怎麼辦呢?我已經盡了自己做這件事的方式,但不工作

with open(filename) as json_data: 
     nations = json.load(json_data)['data'] 
     for x in nations: 
      if x['Capital'] == "Canberra": 
       del x['Capital'] 

如何刪除該項目呢?

回答

1

我建議使用列表理解重新構建您的JSON。

nations = json.load(json_data)['data'] 
nations_new = [x for x in nations if x['Capital'] != "Canberra"] 

如果你有多個過濾器,創建它們的set

filters = {'Canberra', 'Mexico City', ...} 
nations_new = [x for x in nations if x['Capital'] not in filters] 

最後,保存過濾的數據:

with open(filename, 'w') as json_data: 
    json.dump(nations_new, json_data) 
+0

@COLDSPEED嘿,這將是巨大的,但我有隻發佈了一個JSON文件,實際上我有多個JSON文件,並且在每個JSON文件中,我想刪除一個特定的項目。所以我不認爲每次重新創建JSON都是一個好主意。 –

+0

@SouvikRay它比你想象的要便宜,因爲你只是移動引用。不幸的是,你不能在循環內刪除。 –

+0

@COLDSPEED哦,好酷! –