gpt4 book ai didi

python:替换嵌套字典中的字符串

转载 作者:行者123 更新时间:2023-11-28 17:26:05 24 4
gpt4 key购买 nike

我有一个嵌套字典,我想替换列表中所有带有空格后跟数字的字符串(vlc 2.2ado 3.4ultr 3.1) 只是用他们的名字,即 vlcadoultr。这是输入字典:

input = {'cl1': {'to_do': ['ab',
'dir8',
'cop',
'vlc 2.2.2.0',
'7zi',
'7zi',
'ado 3.4']},
'cl2': {'to_do': ['ultr 3.1', 'ab']}}

这应该是输出:

result = {'cl1': {'to_do': ['ab',
'dir8',
'cop',
'vlc',
'7zi',
'7zi',
'ado']},
'cl2': {'to_do': ['ultr', 'ab']}}

我正在尝试类似的东西:

for k in input:
for e in input[k]['to_do']:
input[k]['to_do'] = e.replace(e, e.split()[0])

得到错误的输出:

{'cl1': {'to_do': 'ado'}, 'cl2': {'to_do': 'ab'}}

我不完全明白哪里错了。有什么帮助吗?谢谢

最佳答案

一个更通用的方法是创建一个递归方法,它再次调用自己:

def recursive_split(input, search):
# check whether it's a dict, list, tuple, or scalar
if isinstance(input, dict):
items = input.items()
elif isinstance(input, (list, tuple)):
items = enumerate(input)
else:
# just a value, split and return
return str(input).split(search)[0]

# now call ourself for every value and replace in the input
for key, value in items:
input[key] = recursive_split(value, search)
return input

请注意,此方法使用就地替换,但可以轻松转换为返回新字典。这应该涵盖包含可以转换为字符串的任何类型值的任何结构。在您的情况下,您只需调用即可使用它:

d = recursive_split(d, " ")

关于python:替换嵌套字典中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38969466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com