Сравнить словари, игнорируя определенные ключи

Как я могу проверить, равны ли два словаря, не принимая во внимание некоторые ключи. Например,

equal_dicts(
    {'foo':1, 'bar':2, 'x':55, 'y': 77 },
    {'foo':1, 'bar':2, 'x':66, 'z': 88 },
    ignore_keys=('x', 'y', 'z')
)

должен возвращать True.

UPD :Ищу эффективное и быстрое решение.

УПД2. Я остановился на этом коде, который оказался самым быстрым:

def equal_dicts_1(a, b, ignore_keys):
    ka = set(a).difference(ignore_keys)
    kb = set(b).difference(ignore_keys)
    return ka == kb and all(a[k] == b[k] for k in ka)

Тайминги:https://gist.github.com/2651872

26
задан georg 10 May 2012 в 08:23
поделиться