2013-07-31 41 views
2

以兩種方式從其減去兩個字典,當我有這樣的代碼:尋找差異在一個操作

new = {'a': 1, 'b': 2} 
old = {'a': 1, 'c': 3} 
added = new.keys() - old.keys() 
if added: 
    print('{} keys have been added'.format(len(added))) 
removed = old.keys() - new.keys() 
if removed: 
    print('{} keys have been removed'.format(len(removed))) 
# added, removed = minus_dict(new, old) 

我必須做減法操作兩次。是否存在minus_dict函數?我的意思是我如何找到更有效的方式添加和刪除?

回答

3

使用XOR運算符,如果一組足以:

>>> old.keys()^new.keys() 
{'c', 'b'} 

如果這還不夠好,你必須做兩個刪減,或編寫了一個算法自己。

+0

那麼,我想沒有有效的方法來減少他們在一個操作。你必須做兩次。我想分開添加和刪除。我能想到的只是一種二次行爲算法。無論如何,我喜歡你的答案。謝謝。 – vajrasky

+0

@vajrasky:只需減去兩次即可獲得線性時間表現。 –