Show More
@@ -11,23 +11,23 b' def diff(d1, d2, default=None):' | |||
|
11 | 11 | This includes keys that are present in one dict but not the other, and |
|
12 | 12 | keys whose values are different. The return value is a dict with values |
|
13 | 13 | being pairs of values from d1 and d2 respectively, and missing values |
|
14 | represented as default.''' | |
|
14 | treated as default, so if a value is missing from one dict and the same as | |
|
15 | default in the other, it will not be returned.''' | |
|
15 | 16 | res = {} |
|
16 | 17 | if d1 is d2: |
|
17 | 18 | # same dict, so diff is empty |
|
18 | 19 | return res |
|
19 | 20 | |
|
20 | 21 | for k1, v1 in d1.iteritems(): |
|
21 | if k1 in d2: | |
|
22 |
|
|
|
23 |
|
|
|
24 | res[k1] = (v1, v2) | |
|
25 | else: | |
|
26 | res[k1] = (v1, default) | |
|
22 | v2 = d2.get(k1, default) | |
|
23 | if v1 != v2: | |
|
24 | res[k1] = (v1, v2) | |
|
27 | 25 | |
|
28 | 26 | for k2 in d2: |
|
29 | 27 | if k2 not in d1: |
|
30 |
|
|
|
28 | v2 = d2[k2] | |
|
29 | if v2 != default: | |
|
30 | res[k2] = (default, v2) | |
|
31 | 31 | |
|
32 | 32 | return res |
|
33 | 33 |
@@ -49,5 +49,11 b' class testdicthelpers(unittest.TestCase)' | |||
|
49 | 49 | 'c': ('baz', 456), |
|
50 | 50 | 'd': (456, 'quux')}) |
|
51 | 51 | |
|
52 | # check that we compare against default | |
|
53 | self.assertEqual(diff(d1, d2, 'baz'), {'a': ('foo', 'foo2'), | |
|
54 | 'd': ('baz', 'quux')}) | |
|
55 | self.assertEqual(diff(d1, d2, 'quux'), {'a': ('foo', 'foo2'), | |
|
56 | 'c': ('baz', 'quux')}) | |
|
57 | ||
|
52 | 58 | if __name__ == '__main__': |
|
53 | 59 | silenttestrunner.main(__name__) |
General Comments 0
You need to be logged in to leave comments.
Login now