Movatterモバイル変換
[0]ホーム
[Python-ideas] OrderedDict.peekitem()
Kale Kundertkale at thekunderts.net
Tue Jul 7 09:59:07 CEST 2015
Three things:1. Someone who is not all that familiar with python would never think to doeither of those things. I've been using python for years and it didn't occur tome that I could peek at the ends of an OrderedDict like that until I saw someoneon stack overflow suggest it.2. Furthermore, if you don't have a good understanding of iterators in python,you could be excused for thinking that 'next(reversed(o))' creates a temporarylist and is O(n) in time and memory. Those expressions read like they're doinga lot more work than they actually are, and that's confusing.3. Readability counts, and those expressions hide the intent of the programmer. You wouldn't use 'next(iter(o))' to access the first element of a list, becausethat would be confusing and obfuscated.On 07/06/2015 11:59 PM, Neil Girdhar wrote:> What's wrong with "next(iter(o))" and "next(reversed(o))"?>> On Tue, Jul 7, 2015 at 2:56 AM, Kale Kundert <kale at thekunderts.net> <mailto:kale at thekunderts.net>> wrote:>> I didn't even mean for this thread to be about arbitrarily indexing into an> OrderedDict. I meant for it to be about accessing the first and last items in> an OrderedDict. Given that a method already exists to access and remove these> items, I find it hard to understand why there isn't a method to simply access> them. This should be a constant-time operation if OrderedDict employs a> doubly-linked list under the hood.>> -Kale>> On 07/06/2015 09:23 PM, Neil Girdhar wrote:> > This thread is not about hash tables. This thread is about indexing into an> > ordered dictionary when you need an ordered dictionary. Someone pointed out> > that people expect indexing to be constant time. I agree that no one expects> > indexing to be linear time. My point was that logarithmic-time indexing is> > reasonable and possible.>>
More information about the Python-ideasmailing list
[8]ページ先頭