[Python-ideas] Unpacking a dict

Ethan Furman ethan at stoneleaf.us
Wed May 25 19:25:47 EDT 2016


On 05/25/2016 04:03 PM, Sven R. Kunze wrote:
> On 25.05.2016 22:11, Ethan Furman wrote:
>> On 05/25/2016 12:38 PM, Sven R. Kunze wrote:

>>> Maybe, it's just me but I still tend to think that using unquoted
>>> strings should be reserved for attribute unpacking.
>>
>> lists, tuples, and dicts are basic containers -- having syntax to
>> unpacak them easily is a clear win;  attribute unpacking not so much:
>
> Wait a second. Reading your example below, do you imply that dicts
> actually should provide something like a attribute access to its keys?
>
>  >>> d = {'a': 1,'b': 2}
>  >>> d.b
> 2

No.  I'm saying attribute access is already extremely easy, so we don't 
need to try and make it easier.


> But let me explain how I approached the problem by considering it from
> the the "new users" perspective. Really fast, he will build up the
> following associations:
>
> attributes <-> .abc
> dict keys <-> ['abc'] or [other stuff]
> list/tuple keys <-> [123]
>
> So, from his perspective everything is clearly separated: lists/tuples
> use integers, dicts use mostly strings with quotes and objects have
> attributes which can be used like normal variables without quotes.

And this newbie would be wrong, as [other stuff] for a mapping can 
easily be integers just like lists/tuples.

> Mixing things up (by removing/mixing the visual indicators), makes me
> feel nervous about the consistent perception of Python. Maybe, it's just
> FUD on my side but I can't help this feeling.

We already have that situation:

   some_var = [1, 2]
   a = some_var[0]
   b = some_var[1]

is exactly the same as

   a, b = some_var

and the visual indicators (the integers, the item access) are nowhere to 
be seen.

--
~Ethan~


More information about the Python-ideas mailing list