Oscar Benjamin wrote: > On Jul 24, 2013 7:25 AM, "Peter Otten" <__pete...@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 one >>> d = dict(a=1, b=2, c=3) >>> e = dict(b=4, c=5, d=6) >>> d.viewkeys() & e.viewkeys() set(['c', 'b']) 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 max(some_dict.whateverkeys()). -- http://mail.python.org/mailman/listinfo/python-list