invert dictionary with list &c
Des Small
des.small at bristol.ac.uk
Thu Nov 27 09:30:40 EST 2003
More information about the Python-list mailing list
Thu Nov 27 09:30:40 EST 2003
- Previous message (by thread): invert dictionary with list &c
- Next message (by thread): invert dictionary with list &c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Des Small <des.small at bristol.ac.uk> writes: > anton muhin <antonmuhin.REMOVE.ME.FOR.REAL.MAIL at rambler.ru> writes: [...] > This, however, has given me ideas. It was never concision I wanted > but rather redundancy elimination, and the pattern I wanted _can_ be > written: > > def dict_cons(iter, func, default): > def process_element(d, (k, v)): > val = d.get(k, default) > d.update(dict([[k, func(v, val)]])) > return d > return reduce(process_element, iter, {}) Or rather: def dict_cons(iter, func, default): def process_element(d, (k, v)): d[k] = func(v, d.get(k, default)) return d return reduce(process_element, iter, {}) def count(l): def pair_pad(l): return [(e, ()) for e in l] return dict_cons(pair_pad(l), lambda k,d: d+1, 0) def invert(d): def invertitems(l): for k,v in l: yield v,k def addtolist(k, l): return l+[k] return dict_cons(invertitems(d.iteritems()), addtolist, []) > Which is not to say that it should be, of course. > Whereupon, we can say: > > def count(l): > def pair_pad(l): return [(e, ()) for e in l] > return dict_cons(pair_pad(l), lambda k,d: d+1, 0) > > def invert(d): > def invertitems(l): for k,v in l: yield v,k > def addtolist(k, l): return l+[k] > return dict_cons(invertitems(d.iteritems()), > addtolist, []) > > Perhaps I'm terminally unpythonic, but I quite like these. [...] -- "[T]he structural trend in linguistics which took root with the International Congresses of the twenties and early thirties [...] had close and effective connections with phenomenology in its Husserlian and Hegelian versions." -- Roman Jakobson
- Previous message (by thread): invert dictionary with list &c
- Next message (by thread): invert dictionary with list &c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list