Python 3: dict & dict.keys()
__peter__ at web.de
Wed Jul 24 15:25:14 CEST 2013
Oscar Benjamin wrote:
> On Jul 24, 2013 7:25 AM, "Peter Otten" <__peter__ at web.de> wrote:
>> Ethan Furman wrote:
>> > So, my question boils down to: in Python 3 how is dict.keys()
>> > different
>> > from dict? What are the use cases?
>> I just grepped through /usr/lib/python3, and could not identify a single
>> line where some_object.keys() wasn't either wrapped in a list (or set,
>> sorted, max) call, or iterated over.
>> To me it looks like views are a solution waiting for a problem.
> What do you mean? Why would you want to create a temporary list just to
> iterate over it explicitly or implicitly (set, sorted, max,...)?
I mean I don't understand the necessity of views when all actual usecases
need iterators. The 2.x iterkeys()/iteritems()/itervalues() methods didn't
create lists either.
Do you have 2.x code lying around where you get a significant advantage by
picking some_dict.viewkeys() over some_dict.iterkeys()? I could construct
>>> d = dict(a=1, b=2, c=3)
>>> e = dict(b=4, c=5, d=6)
>>> d.viewkeys() & e.viewkeys()
but have not seen it in the wild.
My guess is that most non-hardcore users don't even know about viewkeys().
By the way, my favourite idiom to iterate over the keys in both Python 2 and
3 is -- for example -- max(some_dict) rather than
More information about the Python-list