Попытка сравнить 2 двумерных диктанта в Python
Написал этот код:
import collections
import json
import pprint
def dict_compare(d1, d2):
d1_keys = set(d1.keys())
d2_keys = set(d2.keys())
intersect_keys = d1_keys.intersection(d2_keys)
added = d1_keys - d2_keys
removed = d2_keys - d1_keys
modified = {o: (d1[o], d2[o]) for o in intersect_keys if d1[o] != d2[o]}
same = set(o for o in intersect_keys if d1[o] == d2[o])
return added, removed, modified, same
checkslist = collections.defaultdict(dict)
checkslist['a'][0]="test1"
checkslist['a'][1]="test2"
with open('checklist.json',"w") as outfile:
json.dump(checkslist,outfile)
with open('checklist.json',"r") as infile:
data = json.load(infile)
added, removed, modified, same = dict_compare(data, checkslist)
print(added, removed, modified, same)
К сожалению, это не очень хорошо работает. Он обнаруживает его как измененный.
Выход:
(set([]), set([]), {'a': ({u'1': u'test2', u'0': u'test1'}, {0: 'test1', 1: 'test2'})}, set([]))
3-й сет должен быть пустым.
Как правильно сравнить 2 двумерных диктанта?
Спасибо
обновление 1:
checkslistbase = collections.defaultdict(dict)
checkslist = collections.defaultdict(dict)
checkslistbase['a'][0]="test1"
checkslistbase['a'][1]="test2"
checkslist['a'][0]="test1"
checkslist['a'][1]="test3"
Хотите сравнить контрольный список с контрольным списком. В этом случае он должен обнаружить, что контрольный список ['a'] [1] был изменен (изменен). Следует также упомянуть, когда материал был добавлен, удален или что то же самое.