gpt4 book ai didi

python - 更多 pythonic 方法来替换字符串中的关键字?

转载 作者:行者123 更新时间:2023-11-28 22:38:02 26 4
gpt4 key购买 nike

我正在尝试使用以下函数包装 API。 API 的端点与此类似:

/users/{ids}
/users/{ids}/permissions

我的想法是,我将能够向我的函数传递一个包含 ids 列表的字典,并且这些将按照 API 的预期进行格式化:

users = {'ids': [1, 2, 3, 5]}
call_api('/users/{ids}/permissions', users)

然后在 call_api 中,我目前做这样的事情

def call_api(url, data):
for k, value in data.items():
if "{" + key + "}" in url:
url = url.replace("{"+k+"}", ';'.join(str(x) for x in value))
data.pop(k, None)

这行得通,但我无法想象 if 语句是有效的。

我如何改进它并让它在 Python 2.7 和 Python 3.5 中工作?

我还被告知在迭代时更改字典是不好的,但在我的测试中我从来没有遇到过问题。我 pop 值,因为稍后我检查是否有意外参数(即 data 中遗留的任何内容)。我现在的做法对吗?

最佳答案

与其在遍历字典时修改字典,不如创建另一个对象来保存未使用的键。至少在 Python 3.4+ 中,在迭代过程中删除键会引发RuntimeError:字典在迭代期间改变了大小

def call_api(url, data):
unused_keys = set()
for k, value in data.items():
key_pattern = "{" + k + "}"
if key_pattern in url:
formatted_value = ';'.join(map(str, value))
url = url.replace(key_pattern, formatted_value)
else:
unused_keys.add(k)

此外,如果您认为自己更有可能遇到未使用的 key ,则可能需要反转条件。

关于python - 更多 pythonic 方法来替换字符串中的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962455/

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