为什么这个str.format导致Python中的键错误

时间:2016-03-14 14:49:26

标签: python python-2.7 string-formatting

我在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'

为什么这会导致键错误,因为我可以看到参数中存在所有必需的元素?

2 个答案:

答案 0 :(得分:4)

您只需使用**运算符将字典解压缩为格式字符串:

print(G3.format(**params))

<强>输出

G3 F 250 I -22.5 J -22.5 X 7.4 Y 12.817175976 Z -50 

答案 1 :(得分:4)

这是因为.format()不期待字典;它期待关键字参数。 .format({'F': 4})应更改为.format(F=4)。要使用字典执行此操作,请使用**

print(G3.format(**params))

有关参数解包的更多信息,请参阅docs