python - 从 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))
在这种情况下推荐的方法是什么?谢谢你。
解决方案
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}}}]}
推荐阅读
- reactjs - React.js msal 广告直接认证,无需任何登录按钮
- python - python ArgParse 自定义操作与使用 metavar 的键值选项导致 -h 输出中的重复
- python - 在 python 解释中查找列表中最常见的元素?
- c# - 将面板句柄绘制到位图
- python - MySQLdb._exceptions.ProgrammingError: (1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器相对应的手册
- javascript - 如何在没有 Blazor Web 组件的情况下从 JavaScript 使用 C# WebAssemly
- c# - 从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性
- python - 如何打印所有结果?
- c++ - 为什么推送到向量指针时会出现分段错误
- delphi - 如何引用当前实例的表单而不是引用根表单?