【发布时间】:2026-01-17 09:45:01
【问题描述】:
例如,我有以下字典:
{'foo': 'test',
'bar': {'test1': 'some text here'},
'baz': {'test2': {'test3': 'some text here', 'test4': 'some text here'}}}
或者类似的东西,也许更多的关卡。
现在的问题是,我想将...'some text here' 更改为'A test'。是的,我可以使用很多for 循环,如下代码:
d = {'foo': 'test',
'bar': {'test1': 'some text here'},
'baz': {'test2': {'test3': 'some text here',
'test4': 'some text here'}}}
for i in d:
if d[i] == 'some text here':
d[i] = 'A test'
elif type(d[i]) == dict:
for j in d[i]:
if d[i][j] == 'some text here':
d[i][j] = 'A test'
elif type(d[i][j]) == dict:
for n in d[i][j]:
if d[i][j][n] == 'some text here':
d[i][j][n] = 'A test'
__import__('pprint').pprint(d)
输出:
{'bar': {'test1': 'A test'},
'baz': {'test2': {'test3': 'A test', 'test4': 'A test'}},
'foo': 'test'}
但是我认为这不是一个好方法...有什么想法吗?
【问题讨论】:
-
@user2393267: 那叫标签,不是标签:)
-
替换的标准是什么,任意深度任意值的精确匹配?
-
@qarma:嗯,实际上我在我的问题中说过:也许更多级别。
标签: python dictionary nested