python - 是否可以递归地编辑可迭代对象中的子元素
问题描述
我得到了这种结构提供的一些覆盖元素:
(keys, value)
我想用它来改变嵌套对象(字典和列表)中的值。它可能看起来像这样:
data[keys[0]][keys[1]][keys[2]] = value
难点是,键的数量是可变的。我不知道如何递归地管理这个。
解决方案
您可以执行以下操作(迭代地):
def setkeys(data, keys, value):
*path, last = keys
for key in path:
data = data[key]
data[last] = value
或者对于递归解决方案:
def setkeys(data, keys, value):
head, *tail = keys
if tail:
setkeys(data[head], tail, value)
else:
data[head] = value
推荐阅读
- react-native - TypeError:TypeError:null 不是对象(评估“this.state.ischecked1”)
- python - 在多索引熊猫列的子级别中创建新列
- ajax - POST http://127.0.0.1:8000/addcontact 500(内部服务器错误)
- c# - 如何使用文本框搜索 Datagridview(存储过程数据)
- codeigniter - Codeigniter 解析器库停止工作
- javascript - 在 Visual Studio 的浏览器模拟器中运行 JavaScript 时遇到问题
- php - 引用每个数组值
- javascript - ajax成功和location.Reload()后如何在div中显示消息
- ios - 我可以在 React Native 中创建 App 的组件吗?
- java - 我可以在 RecyclerViews customAdapter-onBindViewHolder() 中传递一个循环吗?