如何使用" {0.word}"来使用字符串格式

时间:2014-06-16 09:20:33

标签: python string python-3.x formatting

我一直在阅读Python标准库的第6部分。我来到以下字符串格式:

"Weight in tons {0.weight}"      # 'weight' attribute of first positional arg

我不明白在.format括号中放置什么来用权重替换weight。如果有人能提供帮助,我们将不胜感激。

作为尝试,我尝试了以下操作,但失败了:

"Weight in tons {0.weight}".format({'weight':10})

错误:

AttributeError: 'dict' object has no attribute 'weight'

2 个答案:

答案 0 :(得分:9)

该语法适用于属性,而不是键。如果要从字典中打印元素,请使用:

print("Weight in tons {0[weight]}".format({'weight':10}))

以下是.语法的有效用法:

class Dummy:
    def __init__(self):
        self.weight = 10

d = Dummy()
print("Weight in tons {0.weight}".format(d))

最后,而不是:

"Weight in tons {0.weight}".format({'weight':10})

...您可能打算使用命名参数语法:

print("Weight in tons {weight}".format(weight=10))

答案 1 :(得分:4)

最好像这样解压缩字典

"Weight in tons {weight}".format(**{'weight':10})
# Weight in tons 10

这样您就可以使用相应的键名来访问这些值,例如{weight}