python - 分层访问字典
问题描述
想要dict
通过像dict[accessor]
while acccessor
is这样的字符串来访问'keyA.nestedKeyB'
。在这里用 Lambda 找到了一些东西并覆盖了dict
类 ( https://stackoverflow.com/questions/39818669/dynamically-accessing-nested-dictionary-keys
),但不幸的是没有工作示例。
代码
data = { "keyA": { "nestedKeyB": "Hello" } }
print(data['keyA']['nestedKeyB']) # prints 'Hello'
accessor = 'keyA.nestedKeyB'
print(data[accessor]) # KeyError
解决方案
由于 python dict 不支持点符号,因此您必须将访问器转换为foo["bar"]["baz"]
表单。
像这样简单的东西,
def access(foo, accessor):
keys = accessor.split('.')
data = foo
for key in keys:
data = data[key]
return data
推荐阅读
- c# - HTTP POST 不显示结果
- python - Python/C API 项目 - 编译为 exe
- javascript - 如何处理猫鼬中的循环依赖关系?
- database - 如何在毫秒访问中创建一个包含所有年份/秒的表?
- javascript - 如何在Javascript中将操作符号(+、*、-、/)添加到数组中
- memory-leaks - CS50/pset5/speller 内存泄漏
- php - 注意:尝试访问 null 类型值的数组偏移量
- c++ - 如何在 Visual Studio C++ 中添加 .hpp 文件
- ms-access - 如何使用代码使用密码加密访问?
- spring - 在 Spring Framework 中使用 STOMP 创建名为“clientInboundChannel”的 bean 时出错