Splat打开字典

时间:2018-01-12 02:50:11

标签: python dictionary

我试图解压缩列表:

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,解包也无法正常工作。

1 个答案:

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