John Henry wrote: > Hi list, > > I am sure there are many ways of doing comparision but I like to see > what you would do if you have 2 dictionary sets (containing lots of > data - like 20000 keys and each key contains a dozen or so of records) > and you want to build a list of differences about these two sets. > > I like to end up with 3 lists: what's in A and not in B, what's in B > and not in A, and of course, what's in both A and B. > > What do you think is the cleanest way to do it? (I am sure you will > come up with ways that astonishes me :=) ) > > Thanks, I make it 4 bins: a_exclusive_keys b_exclusive_keys common_keys_equal_values common_keys_diff_values
Something like: a={1:1, 2:2,3:3,4:4} b = {2:2, 3:-3, 5:5} keya=set(a.keys()) keyb=set(b.keys()) a_xclusive = keya - keyb b_xclusive = keyb - keya _common = keya & keyb common_eq = set(k for k in _common if a[k] == b[k]) common_neq = _common - common_eq If you now simple set arithmatic, it should read OK. - Paddy. -- http://mail.python.org/mailman/listinfo/python-list