python - Python在键列表中修改嵌套字典值
问题描述
我有一本像这样的字典:
{"value1": {}, "value2": {"value3": {}, "value4": {}, "value5": {"value6": {}}}}
和一个键列表:
["value2", "value4"]
如何修改字典以使键"value4"
(在带有键的字典中"value2"
)更改为"value4*"
?我只希望最后一个键受到影响,所以"value2"
不会被改变。
我尝试过使用list(map(dictionary.get, keys))
,但这并没有达到我想要的效果。
提前致谢。
ps 我尽量保持简短,如果我剪得太多,请告诉我。
解决方案
您可以使用递归:
new_d = ["value2", "value4"]
d = {"value1": {}, "value2": {"value3": {}, "value4": {}, "value5": {"value6": {}}}}
def update(data):
return {a if a != new_d[-1] else f'{a}*':b if not isinstance(b, dict) else update(b) for a, b in data.items()}
print(update(d))
输出:
{'value1': {}, 'value2': {'value3': {}, 'value4*': {}, 'value5': {'value6': {}}}}
编辑:没有f-string
:
def update(data):
return {a if a != new_d[-1] else a+"*":b if not isinstance(b, dict) else update(b) for a, b in data.items()}
推荐阅读
- mongodb - 无法连接到谷歌云 vm 实例上的 mongodb 副本集
- python - 在终端中找不到 Tesseract
- css - 如何修复 vue cli 中未找到模块的错误?
- java - 将十六进制字符串转换为字节数组
- python - Pandas groupby 然后统计出现的次数为0
- javascript - 使用 fetch 递归加载分页数据
- c++ - 如何解决“GLib-GObject-CRITICAL g_object_unref: assertion 'G_IS_OBJECT (object)' failed”错误?
- python - 如何从字典中仅选择标签作为图形标题(Plotly Dash)
- sql - 更新选定行的最小值列
- c++ - 如何使用 wxWidgets 制作类似的界面?