gpt4 book ai didi

python - 用对应于同一字典中不同键的值替换键的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:34 25 4
gpt4 key购买 nike

我没有 Python 脚本编写经验,但作为我项目的要求,我必须构建代码,这就是我遇到的问题 -

我有一个包含以下值的字典,它来自一个 unix 脚本,用于设置我必须在 python 中读取的通用路径 -

{'# blah blah blah ': '', 'START_DIR': '/PATH/TO/StartDir', 'FIRST_DIR': '${START_DIR}/FirstDir', '# GIBBERISH': 'MORE GIBBERISH', 'SECOND_DIR': '${FIRST_DIR}/SecondDir'....so on and so forth}

我能够读取这些值,但这些值会像 -

FIRST_DIR="${START_DIR}/FirstDir"
SECOND_DIR="${FIRST_DIR}/SecondDir"
.....

由于 unix 变量在 Python 中读取时不会扩展,我想替换字典中所有 ${} 封闭变量的字典值,如下所示 -

{'# blah blah blah ': '', 'START_DIR': '/PATH/TO/StartDir', 'FIRST_DIR': '/PATH/TO/StartDir/FirstDir', '# GIBBERISH': 'MORE GIBBERISH', 'SECOND_DIR': '/PATH/TO/StartDir/FirstDir/SecondDir'....so on and so forth}

我搜索了这个论坛,我得到的最接近的答案是在这个链接中找到的 - https://codereview.stackexchange.com/questions/80273/replace-keys-in-values-with-key-values-from-same-dictionary但我无法解决我的问题。你们谁能帮帮我吗?

感谢您的宝贵时间!

最佳答案

您可以使用 re.search 来查找 unix 样式变量。如果找到匹配项,请将该变量替换为字典中的变量。 while 循环是因为这些变量可以引用变量更多的变量等。所以继续,直到所有变量都展开。

import re
def convert_dict(d):
while any(re.search('\${(.*)}', i) for i in d.values()):
for key, value in d.items():
match = re.search('\${(.*)}', value)
if match:
d[key] = value.replace(match.group(0), d[match.group(1)])

输出

>>> d = {'FIRST_DIR': '${START_DIR}/FirstDir',
'# GIBBERISH': 'MORE GIBBERISH',
'# blah blah blah ': '',
'SECOND_DIR': '${FIRST_DIR}/SecondDir',
'START_DIR': '/PATH/TO/StartDir'}
>>> convert_dict(d)
{'FIRST_DIR': '/PATH/TO/StartDir/FirstDir',
'START_DIR': '/PATH/TO/StartDir',
'# blah blah blah ': '',
'# GIBBERISH': 'MORE GIBBERISH',
'SECOND_DIR': '/PATH/TO/StartDir/FirstDir/SecondDir'}

关于python - 用对应于同一字典中不同键的值替换键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304094/

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