[Python-ideas] Unpacking a dict
ethan at stoneleaf.us
Wed May 25 16:11:11 EDT 2016
On 05/25/2016 12:38 PM, Sven R. Kunze wrote:
> On 25.05.2016 20:42, Steven D'Aprano wrote:
>> There's no need to unpack the entire dict, you can grab only the keys
>> you need:
>> width, height = **prefs
>> # like
>> width = prefs['width']
>> height = prefs['height']
> That's not the same behavior as it is for tuple unpacking. As a new
> user, I would expect them to work the same way.
> If I want to dismiss the remainder of the dict, I'd rather consider an
> explicit approach:
> width, height = **prefs # just those values
> width, height, *r = **prefs # r captures the rest
> This gives me two benefits:
> 1) I can further work with r from which width and height are extracted
> 2) a convenient way of verifying that a dict only contains certain
> values and extracting those at the same time
Okay, those are good benefits. +1
> 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:
--> some_long_object_name = MyClass(blah, blah)
--> s = some_long_object_name
--> another value
which is sufficiently readable.
> One additional drawback of this solution is the fact that the "value"
> part of the colon is already taken. So, value matching like done in
> Erlang is not possible. OTOH, this applies to tuple unpacking in its
> current form as well
This is about unpacking, not matching.
More information about the Python-ideas