Сравните два словаря и выведите разницу

#python #python-2.7 #for-loop #dictionary-comprehension

#python #python-2.7 #for-цикл #словарь-понимание

Вопрос:

Я взял разницу между значениями для двух словарей. То, что у меня есть в данный момент, работает, но я хочу напечатать «dict1 [x] — dict2 [x]» в файл, в который я записываю, перед результатами. Не только результаты. Как я могу это сделать? Нужен ли мне вложенный цикл?

 comparison = {x: dict1[x] - dict2[x] for x in dict1 if x in dict2}

file1 = open('Results.txt', 'w')
for key,value in comparison.iteritems():
    print >> file1, ('%s: %s' % (key,value)) 
file1.close()
  

Редактировать: пример

Значения, хранящиеся в каждом словаре, являются временными метками, поэтому я хочу, чтобы мои окончательные результаты выглядели следующим образом:

 12:30-11:30 = 1:00 
  

Комментарии:

1. Непонятно, что вы имеете в виду под I want to print "dict1[x] - dict2[x]" to the file I write to in front of the results . Можете ли вы обновить свой вопрос с помощью примера ввода и ожидаемого результата?

Ответ №1:

Вместо этого вы можете создать кортеж из dict1[x] и dict2[x] ключа dict и соответствующим образом распаковать его при переборе элементов dict:

 comparison = {(dict1[x], dict2[x]): dict1[x] - dict2[x] for x in dict1 if x in dict2}

file1 = open('Results.txt', 'w')
for (time1, time2), value in comparison.iteritems():
    print >> file1, ('%s-%s: %s' % (time1, time2, value)) 
file1.close()
  

Комментарии:

1. Возможно ли затем также включить ключ? Например, key: time1 - time2 = value