首页 > 解决方案 > 从 Python 中的 json 文件中删除密钥(获取 TypeError)

问题描述

我有一个这个 json 文件:

{
 "DailyForecasts": [
  {
   "Temperature": {
    "Minimum": {
     "Value": 2.9
    },
    "Maximum": {
     "Value": 16.1
    }
  },
 "HoursOfSun": 12,
 "AirAndPollen": [
    {
      "Name": "AirQuality",
      "Value": 37,
      "CategoryValue": 1
    },
    {
      "Name": "UVIndex",
      "Value": 5,
      "CategoryValue": 2
    }
   ]
  }
 ]
}

我想从“AirAndPollen”数组中删除“CategoryValue”键。我尝试了这个 Python 代码,但得到:

TypeError:列表索引必须是整数或切片,而不是 str

我的 Python 代码:

import json

with open('accu-test.json') as f:
    data = json.load(f)

for remove in data['DailyForecasts']:
    del remove['AirAndPollen']['CategoryValue']

print(json.dumps(data, indent=2))

在这种情况下推荐的方法是什么?谢谢你。

标签: pythonjson

解决方案


AirAndPollen 是一个列表,你也必须遍历它。

for i in data['DailyForecasts']:
    for j in i['AirAndPollen']:
        del j['CategoryValue']

from pprint import pprint
pprint(data)

 # {'DailyForecasts': [{'AirAndPollen': [{'Name': 'AirQuality', 'Value': 37},
 #                                       {'Name': 'UVIndex', 'Value': 5}],
 #                      'HoursOfSun': 12,
 #                      'Temperature': {'Maximum': {'Value': 16.1},
 #                                      'Minimum': {'Value': 2.9}}}]}

推荐阅读