为什么这个 str.format 导致 Python 中的键错误
Why is this str.format causing a Key Error in Python
我在 python 2.7.10 脚本中有以下代码
params = {'F': '250', 'I': '-22.5', 'J': '-22.5', 'Y': '12.817175976', 'X': '7.4', 'Z': '-50'}
G3 = 'G3 F {F} I {I} J {J} X {X} Y {Y} Z {Z} \n'
print(params)
print(G3)
print(G3.format(params))
当我尝试 运行 它给出以下输出:
./g-codeGenerator.py
{'F': '250', 'I': '-22.5', 'J': '-22.5', 'Y': '12.817175976', 'X': '7.4', 'Z': '-50'}
G3 F {F} I {I} J {J} X {X} Y {Y} Z {Z}
Traceback (most recent call last):
**Traceback truncated**
File "./g-codeGenerator.py", line 342, in siliconOutputSequence
print(G3.format(params))
KeyError: 'F'
据我所知,参数中存在所有必需的元素,为什么这会导致键错误?
您只需要使用 **
运算符将字典解压为格式字符串:
print(G3.format(**params))
输出
G3 F 250 I -22.5 J -22.5 X 7.4 Y 12.817175976 Z -50
这是因为.format()
不需要字典;它期待关键字参数。 .format({'F': 4})
应更改为 .format(F=4)
。要用你的字典做到这一点,请使用 **
:
print(G3.format(**params))
有关参数解包的详细信息,请参阅 docs。
我在 python 2.7.10 脚本中有以下代码
params = {'F': '250', 'I': '-22.5', 'J': '-22.5', 'Y': '12.817175976', 'X': '7.4', 'Z': '-50'}
G3 = 'G3 F {F} I {I} J {J} X {X} Y {Y} Z {Z} \n'
print(params)
print(G3)
print(G3.format(params))
当我尝试 运行 它给出以下输出:
./g-codeGenerator.py
{'F': '250', 'I': '-22.5', 'J': '-22.5', 'Y': '12.817175976', 'X': '7.4', 'Z': '-50'}
G3 F {F} I {I} J {J} X {X} Y {Y} Z {Z}
Traceback (most recent call last):
**Traceback truncated**
File "./g-codeGenerator.py", line 342, in siliconOutputSequence
print(G3.format(params))
KeyError: 'F'
据我所知,参数中存在所有必需的元素,为什么这会导致键错误?
您只需要使用 **
运算符将字典解压为格式字符串:
print(G3.format(**params))
输出
G3 F 250 I -22.5 J -22.5 X 7.4 Y 12.817175976 Z -50
这是因为.format()
不需要字典;它期待关键字参数。 .format({'F': 4})
应更改为 .format(F=4)
。要用你的字典做到这一点,请使用 **
:
print(G3.format(**params))
有关参数解包的详细信息,请参阅 docs。