枚举字典项时解压缩索引,键和值

时间:2016-02-17 19:42:33

标签: python dictionary

假设我有以下代码:

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占位符的单行替换,而不是实际的功能。

2 个答案:

答案 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)

我将变量重命名为kval,以区分(key, value)返回的items()对与此示例中的变量名称。

编辑:阅读有关元组赋值here的信息。另外PEP 3132: Extended Iterable Unpacking

请查看此Interactivepython页面。这对于掌握解包的想法也很有帮助。