gpt4 book ai didi

python - str.format 以 dict 作为参数引发 KeyError

转载 作者:行者123 更新时间:2023-11-28 22:09:01 25 4
gpt4 key购买 nike

请看下面的代码。

s = "{a} {b} {a}"

print(s.format(a=1, b=2))
print(s.format({"a": 1, "b": 2}))

输出是:

1 2 1
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(s.format({"a": 1, "b": 2}))
KeyError: 'a'

我认为 str.format(a=1, b=2) 等同于 str.format({"a": 1, "b": 2}) 但它看起来并非如此。

如果您必须编写大量参数(特别是如果您有多个格式字符串),第一种方法似乎很糟糕。我更喜欢第二个。

那么我可以使用 dict 来格式化带有重复 a 参数的字符串吗?或者任何简短的替代方法来避免格式​​方法括号内的长参数列表?

最佳答案

您必须使用命名参数打包传递字典,否则 format 会恢复到位置以显示字典的字符串表示(如果 s = "{}" 例如,但不是您想要的)。

s.format(**{"a": 1, "b": 2})

这在使用变量时更容易理解:

d = {"a": 1, "b": 2}
s.format(d) # tries to shove "d" into 3-param/named format: wrong
s.format(**d) # unpacks arguments. Works because keys are compatible with format string

关于python - str.format 以 dict 作为参数引发 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57945282/

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