假设我有以下代码:
my_dict = {str(n*100): n for n in range(5)}
for index, key_value in enumerate(my_dict.items()):
print(index, key_value[0], key_value[1])
这将创建一个包含5个键的字典,然后为字典中的每个键值对打印(索引,键,值)。
是否有更优雅的方法来解压缩字典项目,以便我可以执行以下操作:
for index, key, value in unpack_index_and_items(my_dict):
print(index, key, value)
最好是我正在寻找unpack_index_and_items占位符的单行替换,而不是实际的功能。
答案 0 :(得分:1)
当然,你可以这样做:
for index, (key, value) in enumerate(my_dict.items()):
print index, key, value
答案 1 :(得分:1)
你快到了。只需使用:
for index, (k, val) in enumerate(my_dict.items()):
print(index, k, val)
请注意k, val
周围的括号。如果没有它,你会得到ValueError: need more than 2 values to unpack
。原因是items()
返回(key, value)
对。看here。如果没有括号,items()
返回的元组将被分配到k
,并且没有任何内容可以分配给val
,这就是您收到错误need more than 2 values to unpack
的原因。但是,使用括号,items()
返回的元组将分配给元组(k, val)
。
我将变量重命名为k
和val
,以区分(key, value)
返回的items()
对与此示例中的变量名称。
编辑:阅读有关元组赋值here的信息。另外PEP 3132: Extended Iterable Unpacking
请查看此Interactivepython页面。这对于掌握解包的想法也很有帮助。