我试图解压缩列表:
ls = [1, 2, 3]
a, *b = ls
然后,我试图解压缩字典:
dc = {'x': 1, 'y': 2, 'z': 3}
a, **b = dc
# Out: SyntaxError
我期待这个工作......
这不是什么大不了的事,因为我仍然可以获得键(a, *b = dc
),值(a_val, *b_val = dc.values()
)并将它们压缩成字典。但我很好奇:我在这里错过了什么吗?这将来有可能吗?
顺便说一句,我使用的是Python 3.6,其中字典尚未保证订购,但即使使用collection.OrderedDict,解包也无法正常工作。
答案 0 :(得分:2)
明显的问题是订购。由于字典是无序的,因此很容易产生在代码中引入细微错误的值,这些错误似乎应该起作用。
dc = {'x': 1, 'y': 2, 'z': 3}
a, *b = dc
# `a` could be any of 'x', 'y', 'z'
a2, **b2 = dc
# `a2` could be any of {'x': 1}, {'y': 2}, {'z': 3}
# (though I believe it's constrained to be the same key as `a` above)