If you refactor your data structure (assuming id
is unique within one dictionary), a comparison could be implemented more efficiently (namely in O(n)
. Dictionary lookups are O(1)
. Example:
#!/usr/bin/env python
d1 = {
1 : {"title" : "title1"},
2 : {"title" : "title2"},
3 : {"title" : "title3"},
}
d2 = {
1 : {"title" : "title1"},
2 : {"title" : "title3"},
3 : {"title" : "title4"},
}
for key, value in d1.items():
if not value == d2[key]:
print "@", key, "values differ:", d1[key], "vs", d2[key]
# @ 2 values differ: {'title': 'title2'} vs {'title': 'title3'}
# @ 3 values differ: {'title': 'title3'} vs {'title': 'title4'}
Or shorter:
print [ (k, (d1[k], d2[k])) for k in d1 if not d2[k] == d1[k] ]
# [(2, ({'title': 'title2'}, {'title': 'title3'})), \
# (3, ({'title': 'title3'}, {'title': 'title4'}))]