У меня есть два разных файла, которые состоят из словарей.Я пытаюсь перебрать только ключ ('name'), значение в первом файле словарей и сопоставить их со вторым файлом.Я, кажется, получаю неправильный вывод, поскольку он проходит через оба ключа 'name' и 'size'.Я рассмотрел несколько способов сделать это, но я не хочу, чтобы иметь возможность преобразовать свой словарь в набор.Я хочу, чтобы можно было распечатать либо «соответствует» или «не соответствует».До сих пор я сделал следующее:
def compare_files():
with open('new.json', 'r') as current_data_file, open('old.json','r') as pre_data_file:
for current_data, previous_data in zip(current_data_file, pre_data_file):
data_current = json.loads(current_data)
data_previous = json.loads(previous_data)
for key, value in data_current.items():
if value not in data_previous:
print "No Match"
else:
print "Match"
Это мои два файла json, которые я загружаю:
old.json
{"name": "d.json", "size": 1000}
{"name": "c.json", "size": 1000}
{"name": "b.json", "size": 1000}
new.json
{"name": "a.json", "size": 1000}
{"name": "b.json", "size": 1000}
{"name": "c.json", "size": 1000}
data_current:
{u'size': 1000, u'name': u'a.json'}
{u'size': 1000, u'name': u'b.json'}
{u'size': 1000, u'name': u'c.json'}
data_previous is:
{u'size': 1000, u'name': u'd.json'}
{u'size': 1000, u'name': u'c.json'}
{u'size': 1000, u'name': u'b.json'}
Вывод:
No Match
No Match
No Match
No Match
No Match
No Match
Мой ожидаемый вывод:
No Match
Match
Match
b.json и c.json существуют в обоих, а a.json и d.json - нет.