Tôi cần so sánh 2 từ điển để tìm tập hợp các khóa trong một từ điển không nằm trong từ điển kia.Cách ngắn gọn để tìm sự khác biệt "chính" giữa 2 từ điển?
Tôi biết rằng Python thiết đối tượng hỗ trợ:
set3=set1-set2
nhưng tôi không thể làm:
dict3=dict1-dict2
hay:
missingKeys=dict1.keys()-dict2.keys()
(Tôi là một chút ngạc nhiên bởi điểm cuối cùng, bởi vì trong Java các khóa là một đối tượng Set.) Một giải pháp là:
missingKeys=set(dict1.keys())-set(dict2.keys())
có cách nào hay hơn hay ngắn gọn hơn để thực hiện việc này?
Tôi nghĩ rằng dòng cuối cùng là đủ ngắn gọn bản thân mình, nhưng ... Tôi đoán một câu hỏi thú vị hơn "Làm thế nào để loại bỏ tất cả z trong Y từ X?" trong đó X và Y là các danh sách. Điều này sẽ hữu ích khi các bản sao z tồn tại trong X xuất hiện trong Y nên được để lại một mình, ví dụ. –
@pst: Vâng, nó cảm thấy một chút kỳ lạ để tạo ra các đối tượng thiết lập, chỉ để tận dụng sự khác biệt() chức năng ... –
Mặt khác, bởi vì nó * là * một bộ, nó có thể tận dụng một O tốt hơn ... cho sự khác biệt danh sách bằng cách sử dụng hiểu là dễ dàng, nhưng một chút tẻ nhạt hơn. Tuy nhiên, hiệu suất tương tự nếu danh sách "được thăm dò" được chuyển đổi thành 'tập'. –