On Sep 18, 10:54 am, "Simon Mullis" <[EMAIL PROTECTED]> wrote: > Hi, > > Let's say I have an arbitrary list of minor software versions of an > imaginary software product: > > l = [ "1.1.1.1", "1.2.2.2", "1.2.2.3", "1.3.1.2", "1.3.4.5"] > > I'd like to create a dict with major_version : count. > > (So, in this case: > > dict_of_counts = { "1.1" : "1", > "1.2" : "2", > "1.3" : "2" } > > Something like: > > dict_of_counts = dict([(v[0:3], "count") for v in l]) > > I can't seem to figure out how to get "count", as I cannot do x += 1 > or x++ as x may or may not yet exist, and I haven't found a way to > create default values. > > I'm most probably not thinking pythonically enough... (I know I could > do this pretty easily with a couple more lines, but I'd like to > understand if there's a way to use a dict generator for this).
Not everything has to be a one-liner; also v[0:3] is wrong if any sub- version is greater than 9. Here's a standard idiom (in 2.5+ at least): from collection import defaultdict versions = [ "1.1.1.1", "1.2.2.2", "1.2.2.3", "1.3.1.2", "1.3.4.5"] major2count = defaultdict(int) for v in versions: major2count['.'.join(v.split('.',2)[:2])] += 1 print major2count HTH, George -- http://mail.python.org/mailman/listinfo/python-list