What's the cleanest way to compare 2 dictionary?

Paddy paddy3118 at netscape.net
Wed Aug 9 14:47:53 EDT 2006


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.




More information about the Python-list mailing list