python 变量解包失败
python variable unpacking fails
7.10 并且出于某种原因,以下代码片段产生错误...
device_info = {'username': 'test', 'password': 'test', 'appliance': 'name', 'hostname': 'hostname', 'prodcut': 'juice'}
print "{} {} {} {} {}".format(**device_info)
这引发了一个异常:
Traceback (most recent call last):
File "python", line 4, in <module>
print "{} {} {} {} {}".format(**device_info)
IndexError: tuple index out of range
我相信这段代码在语法上应该是合理的,但是,我似乎无法解压我的字典以传递给任何函数,不知道为什么这不起作用。
您将字段作为关键字参数传递,因为您使用的是 **
语法:
"....".format(**device_info)
# ^^
然而,您的占位符仅适用于 positional 参数;没有任何名称或索引的占位符将自动编号:
"{} {} {} {} {}".format(...)
# ^0 ^1 ^2 ^3 ^4
这就是你得到索引错误的原因,没有索引为0的位置参数。关键字参数没有索引,因为它们本质上是字典中的键值对,是无序结构。
如果您想将字典中的值包含到一个字符串中,那么您需要明确命名您的占位符:
"{username} {password} {appliance} {hostname} {prodcut}".format(**device_info)
(但请注意 product 的拼写错误 prodcut,您可能需要检查字典键是否拼写正确)。
您将获得所有插入命名槽的值:
>>> print "{username} {password} {appliance} {hostname} {prodcut}".format(**device_info)
test test name hostname juice
如果您希望打印 keys,那么您必须将 device_info
键作为单独的位置参数传递; "...".format(*device_info)
(单个 *
)就可以做到这一点,但是您还必须满足于列出密钥的 'arbitrary' dictionary order。
device_info = {'username': 'test', 'password': 'test', 'appliance': 'name', 'hostname': 'hostname', 'prodcut': 'juice'}
print ("{username} {password} {appliance} {hostname} {prodcut}".format(**device_info))
7.10 并且出于某种原因,以下代码片段产生错误...
device_info = {'username': 'test', 'password': 'test', 'appliance': 'name', 'hostname': 'hostname', 'prodcut': 'juice'}
print "{} {} {} {} {}".format(**device_info)
这引发了一个异常:
Traceback (most recent call last):
File "python", line 4, in <module>
print "{} {} {} {} {}".format(**device_info)
IndexError: tuple index out of range
我相信这段代码在语法上应该是合理的,但是,我似乎无法解压我的字典以传递给任何函数,不知道为什么这不起作用。
您将字段作为关键字参数传递,因为您使用的是 **
语法:
"....".format(**device_info)
# ^^
然而,您的占位符仅适用于 positional 参数;没有任何名称或索引的占位符将自动编号:
"{} {} {} {} {}".format(...)
# ^0 ^1 ^2 ^3 ^4
这就是你得到索引错误的原因,没有索引为0的位置参数。关键字参数没有索引,因为它们本质上是字典中的键值对,是无序结构。
如果您想将字典中的值包含到一个字符串中,那么您需要明确命名您的占位符:
"{username} {password} {appliance} {hostname} {prodcut}".format(**device_info)
(但请注意 product 的拼写错误 prodcut,您可能需要检查字典键是否拼写正确)。
您将获得所有插入命名槽的值:
>>> print "{username} {password} {appliance} {hostname} {prodcut}".format(**device_info)
test test name hostname juice
如果您希望打印 keys,那么您必须将 device_info
键作为单独的位置参数传递; "...".format(*device_info)
(单个 *
)就可以做到这一点,但是您还必须满足于列出密钥的 'arbitrary' dictionary order。
device_info = {'username': 'test', 'password': 'test', 'appliance': 'name', 'hostname': 'hostname', 'prodcut': 'juice'}
print ("{username} {password} {appliance} {hostname} {prodcut}".format(**device_info))