python - 将嵌套的键名存储在变量中
问题描述
我有一个字典foo
,其中可能包含 0..x 个键,其中一些键是嵌套的。我有一个键列表,如果它们存在于 中foo
,我想bar
使用不同的键名将它们的值添加到不同的字典中。由于我不知道每个键是否存在于 中foo
,因此我需要检查它们是否存在于 dict 中并将值赋给 in bar
,就None
好像它们不存在一样。例如:
foo = {"ex1": "1",
"ex2": "2",
"ex3": {"ex3nest": "3"},
"ex4": "4",
"ex5": "5"}
field_mappings = {"bar1": "ex1",
"bar2": "ex2",
"bar4": "ex4"}
bar = {}
for key, value in field_mappings.items():
bar[key] = foo[value] if value in foo else None
bar 的值将正确地为:
{"bar1": "1", "bar2": "2", "bar4": "4"}
但是,我想添加一个bar
包含嵌套ex3nest
键值的键,例如:
field_mappings = {"bar1": "ex1",
"bar2": "ex2",
"bar3": key for ex3nest here,
"bar4": "ex4"}
我看不到任何可以分配给bar3
要插入value
循环中的键的值,以便为ex3nest
. 有没有办法像我尝试做的那样在字符串中存储嵌套的键名,或者我的方法一开始是完全错误的?
解决方案
嘿,如果我正确理解了这个问题,您可以使用此代码,假设您在嵌套字典中有一个键:
foo = {"ex1": "1",
"ex2": "2",
"ex3": {"ex3nest": "3"},
"ex4": "4",
"ex5": "5"}
field_mappings = {"bar1": "ex1",
"bar2": "ex2",
"bar3": "ex3",
"bar4": "ex4"}
bar = {}
for key, value in field_mappings.items():
if value in foo:
if type(foo[value])==type({}):
bar[key] = foo[value].keys()[0]
else:
bar[key] = foo[value]
else:
bar[key] = None
或者如果您在嵌套字典中有多个键,则为这个:
bar = {}
for key, value in field_mappings.items():
if value in foo:
if type(foo[value])==type({}):
bar[key] = ",".join(foo[value].keys())
else:
bar[key] = foo[value]
else:
bar[key] = None
推荐阅读
- jenkins - 詹金斯无法执行 make
- angular - Angular(2+):SCSS 中的图像引用被复制到 dist 的根目录(构建)
- python - 在 scikit-learn 中使用 GridSearch 确定要删除/选择的功能
- html - Bootstrap 与行中的表单内联右对齐
- javascript - 如何使用 QWebEngineView 和 qtwebchannel.js 逐步加载 javascript?
- nginx - NGINX 作为 Wowza 前 HLS 实时流的暖缓存 - 获取每个流数据的持续时间和传输的数据?
- javascript - Javascript Datatable 动态数据
- database - 如何用 VueJS 修复这个提交?
- pdf-generation - 启动 chrome 失败!spawn ...node_modules/puppeteer/.../chrome ENOENT TROUBLESHOOTING 使用 Puppeteer
- dart - Flutter Dart - 在 StreamSubscription 中接收非静态成员变量