Если вы просто сравниваете равенство, вы можете просто сделать это:
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 меньше записей, и сначала пройти через него, чтобы получить максимально короткий цикл.