Làm cách nào để kiểm tra xem hai từ điển có bình đẳng không khi xem xét một số khóa. Ví dụ:So sánh các từ điển bỏ qua các khóa cụ thể
equal_dicts(
{'foo':1, 'bar':2, 'x':55, 'y': 77 },
{'foo':1, 'bar':2, 'x':66, 'z': 88 },
ignore_keys=('x', 'y', 'z')
)
phải trả về True.
UPD: Tôi đang tìm một giải pháp nhanh và hiệu quả.
UPD2. Tôi đã kết thúc với mã này, mà dường như là nhanh nhất:
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)
Thời gian: https://gist.github.com/2651872
+1 (tốt hơn so với câu trả lời của tôi!) Ngoài ra, nếu một trong những xảy ra được sử dụng Python 3, bạn có thể sử dụng một [dict comprehension] (http://docs.python.org/py3k/tutorial/datastructures.html#dictionaries) (cuộn xuống một chút) thay cho 'd ict () 'thành ngữ. –
huon
Đây là một giải pháp đơn giản, nhưng trong vấn đề hiệu quả tình hình của tôi. – georg
@ thg435 - xem câu trả lời cập nhật của tôi. – eumiro