Если вы просто сравнивая равенства, вы можете просто сделать это:
if not dict1 == dict2:
match = False
В противном случае, единственная крупная проблема, которую я вижу, что вы собираетесь получить исключение KeyError, если есть ключ в dict1, что не в dict2, так что вы можете сделать что-то вроде этого:
for key in dict1:
if not key in dict2 or dict1[key] != dict2[key]:
match = False
вы можете сжать это в понимании, чтобы просто получить список ключей, которые не соответствуют также:
mismatch_keys = [key for key in x if not key in y or x[key] != y[key]]
match = not bool(mismatch_keys) #If the list is not empty, they don't match
for key in mismatch_keys:
print key
print '%s -> %s' % (dict1[key],dict2[key])
Единственная другая оптимизация, о которой я могу думать, может состоять в том, чтобы использовать «len (dict)», чтобы выяснить, какой dict имеет меньше записей и прокручивает этот первый, чтобы иметь самый короткий цикл.
нужно немного разъяснений ... Вы пытаетесь определить, если dict1 и dict2 содержат точно такие же вещи? Или может dict2 содержать другие значения, которые не указаны в dict1? Кроме того, вам нужно отображать все ключи, которые не совпадают? –
Мне нужно показать все значения, которые не совпадают. У Dict2 есть те же ключи, что и dict1 – randomThought
Вот о чем я тогда напишу. Вы можете 'print dict1 [keys]," -> ", dict2 [keys]' в одной строке. –