Python - 如何修复不可用的类型:'dict'和格式需要映射运算符tripple引号

时间:2013-09-04 00:16:09

标签: python

如何格式化arr和myname?

arr = { 
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %(pincode)s and my name is: %s !""" % {arr, myname}
print """my pincode is: %(pincode)s and my name is: %s !""" % (arr, myname)

期待输出:

我的密码是:pincode,我的名字是:myname!

得到:

TypeError: format requires a mapping

TypeError: unhashable type: 'dict'

TypeError: not enough arguments for format string

3 个答案:

答案 0 :(得分:3)

如何使用新的str.format

arr = { 
'pincode':'PINCODE',
'username':'USERNAME',
'password':'PASSWORD',
'action':'ACTION',
'forward':'FORWARD'
}
myname="MYNAME"
print """my pincode is: {pincode} and my name is: {0}!""".format(myname, **arr)

例如:

>>> arr = {
... 'pincode':'PINCODE',
... 'username':'USERNAME',
... 'password':'PASSWORD',
... 'action':'ACTION',
... 'forward':'FORWARD'
... }
>>> myname="MYNAME"
>>> print """my pincode is: {pincode} and my name is: {0}!""".format(myname, **arr)
my pincode is: PINCODE and my name is: MYNAME!
>>>

**arr应将字典作为关键字传递给format

答案 1 :(得分:2)

这有效:

arr = { 
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)

您还可以将命名参数与format一起使用:

print 'my pincode is: {pincode} and my name is: {myname} !'.format(
       myname=myname, **arr)

请注意,在使用myname设置映射中的所有其他关键字之前,将关键字**arr设置为其值。

干杯。

答案 2 :(得分:2)

arr = {
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)

这似乎有效

编辑:啊,被打败了!