python - 从请求的正文中删除具有“无”值的键
问题描述
使用 Python 的requests
包,我有一个 POST 的主体,其中包含一堆None
值,例如(字典,而不是 JSON):
{
'name': 'John',
'surname': None,
'somelist': [
{
'a': 1,
'b': None
},
{
'a': None,
'b': 2
}
],
'otherdict': {
'c': False,
'd': None
}
}
我希望发送出去的实际正文中的所有条目都None
删除了值,而不是转换为 JSON null
:
{
'name': 'John',
'somelist': [
{
'a': 1
},
{
'b': 2
}
],
'otherdict': {
'c': False
}
}
包裹是否requests
有执行此操作的选项,或者我是否需要最终执行此操作?
解决方案
您可以使用递归来执行此操作(删除带有值的键,或者如果值不是,则None
递归调用该方法):clean
None
def clean(d):
if type(d) == list:
return [clean(e) for e in d]
elif type(d) == dict:
for k, v in list(d.items()):
if v is None:
del d[k]
else:
d[k] = clean(v)
return d
print(clean(data))
输出
{'somelist': [{'a': 1}, {'b': 2}], 'otherdict': {'c': False}, 'name': 'John'}
推荐阅读
- python - Python在运行时删除类对象
- c# - 请求用@variable 替换列名
- ios - cordova emulate iOS 从不从命令行工作,但通过 Xcode 很好
- python - Python 多个进程消耗/迭代单个生成器(分而治之)
- npm - Ghost CMS s3 存储适配器 npm 模块 ContentPath
- javascript - 使用 JavaScript 在正则表达式的行首或行尾排除匹配项
- popup - Mapbox 弹出窗口显示“未知”而不是属性
- qt - 如何在 CSS 中设置多个属性?
- angular - 从内部可观察对象中检索数据时遇到问题
- lua - 5.1 版本中的 LUA HMAC 生成问题