[Tim] > Given the new dict iterators in 2.2, there's an easier fast way > that doesn't mutate the dict even under the covers: > > def arb(dict): > if dict: > return dict.iteritems().next() > raise KeyError("arb passed an empty dict") [Thomas Wouters] > You probably want: > > arb = dict.iteritems().next > > so that you don't keep on returning the same key,value pair. No, I would not want that. If "arbitrary" suffices, then by defn. *any* element is "good enough". If it's not good enough to get the same one back every time, then I want a stronger guarantee about what arb() returns than the inexplicable behavior of repeated calls to dict.iteritems().next in the presence of dict mutation. But as I've said several times before <wink>, I'm still asking for an algorithm where arb() is actually useful (as opposed to .popitem(), which is dead easy to explain in the presence of mutation; your version of arb() can, e.g., return a given entry more than once, may skip entries, and may raise StopIteration with unexamined entries remaining in the dict). not-inclined-to-accept-shallow-comfort-at-the-cost-of-deep-confusion-ly y'rs - tim
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4