[Python-ideas] Unpacking a dict

Chris Angelico rosuav at gmail.com
Wed May 25 22:56:12 EDT 2016


On Thu, May 26, 2016 at 12:43 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
> I'll meet you halfway:
>
>   {a, b} = some_dict
>
> which is currently a SyntaxError, so little backwards compatibility
> concerns, plus it clearly state the mapping should have two elements,
> similarly to
>
>  [a] = some_iterable
>
> and
>
>  (b) = some_iterable
>
> both clearly state that a one-element iterable is being unpacked.
>

Careful - the second one doesn't:

>>> (b) = [1, 2, 3]
>>>

Parens don't make a tuple, and that includes with unpacking. You'd be
correct if you had a comma in there, though.

I hope there doesn't end up being a confusion between mapping
unpacking and set display. Sets are a bit of an odd duck; are they
like lists only unordered, or like mappings only without values? I've
seen them used both ways, and the syntax is somewhere between the two.
Having a syntax that constructs a set if used on the RHS but unpacks a
dict if used on the LHS seems to violate syntactic purity, but I'd be
happy to let practicality trump that.

ChrisA


More information about the Python-ideas mailing list