dict comprehension question.

88888 Dihedral dihedral88888 at googlemail.com
Tue Jan 1 03:40:04 EST 2013


On Tuesday, January 1, 2013 11:10:48 AM UTC+8, Steven D'Aprano wrote:
> On Sat, 29 Dec 2012 18:56:57 -0500, Terry Reedy wrote:
> 
> 
> 
> > On 12/29/2012 2:48 PM, Quint Rankid wrote:
> 
> > 
> 
> >> Given a list like:
> 
> >> w = [1, 2, 3, 1, 2, 4, 4, 5, 6, 1]
> 
> >> I would like to be able to do the following as a dict comprehension. 
> 
> >> a = {}
> 
> >> for x in w:
> 
> >>      a[x] = a.get(x,0) + 1
> 
> >> results in a having the value:
> 
> >> {1: 3, 2: 2, 3: 1, 4: 2, 5: 1, 6: 1}
> 
> > 
> 
> > Let me paraphrase this: "I have nice, clear, straightforward,
> 
> > *comprehensible* code that I want to turn into an incomprehensible mess
> 
> > with a 'comprehension." That is the ironic allure of comprehensions.
> 
> 
> 
> But... but... one liner! ONE LINNNNNNEEEERRRRR!!!! Won't somebody think 
> 
> of the lines I'll save!!!!
> 
> 
> 
> *wink*
> 
> 
> 
> 
> 
> In case it's not obvious, I'm 100% agreeing with Terry here. List comps 
> 
> and dict comps are wonderful things, but they can't do everything, and 
> 
> very often even if they can do something they shouldn't because it makes 
> 
> the code inefficient or unreadable.
> 
> 
> 
> There's nothing wrong with a two or three liner.
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven

This is useful for not being choked in sorting a list
by the notorious quick-sort.



More information about the Python-list mailing list