python - 通过字典列表的键重新编码值
问题描述
我有一个 json 对象,它是一个字典列表,它来自一个 api。我正在寻找在将 json 的某些键插入数据库之前更改它们的值。该列表如下所示:
[
{
'id': 1,
'sex': 'Female'
'status': 'Active'
},
{...},
]
json 总是显示所有的键。我想更改整数键的字符串值,因为它适合数据库模型:
[
{
'id': 1,
'sex': 2
'status': 1
},
{...},
]
我能够使用.update('key': recode_fun)
或遍历整个列表来更改一个字典项,但是如果没有几个循环(循环遍历范围、列表和字典),我不知道如何做到这两者。我正在尝试使用辅助函数来做到这一点:
def recode_sex(value):
return {
'Male': 1,
'Female': 2,
}.get(value, value)
由于有多个键值需要更新并希望保持循环可读。
解决方案
您不需要字典列表,而是字典字典。就像是:
code_table = {
'sex':
{'Male': 1,
'Female': 2
},
'status':
{'Active': ...
},
...
}
然后,您可以使用简单的理解构建重新编码的列表:
recoded = [{k: code_table.get(k, {v: v})[v] for k,v in d.items()} for d in data]
推荐阅读
- python - 数据框中的条件连接
- c - 我应该在此代码中进行哪些更改以使其打印某些内容?insert 函数是否需要是 struct 类型才能插入节点?
- tensorflow - 为什么 batch_normalization 在训练 = True 时产生全零输出,但在训练 = False 时产生非零输出?
- node.js - 在graphql中为用户类型中的字段编写字段级解析器
- postgresql - 当我们对应用程序进行 docker 化时,docker 的卷是从哪里获取的
- authentication - 无法通过我的身份验证器应用程序登录 Heroku
- ruby-on-rails - 在 Rails 中,如果枚举有空格,有没有办法访问它的查询快捷方式?
- javascript - 将 Javascript 函数与 Ajax Post 合并
- javascript - 如何从 Vue 3 中的其他数据中引用数据
- arrays - AnimatePresence 成帧器运动退出在反应元素中不起作用