2015-11-05 45 views
1

我宣佈一個字典test的Python對於未在

test = {'test1': 1, 'test2': 2, 'test3': 3} 

我想打的test副本過濾掉,可能會或可能不存在的特定按鍵。

我試過如下:

test_copy = {k: test[k] for k not in ('test3', 'test4')} 

但是Python的似乎並不喜歡for not in循環。有沒有辦法在一行中很好地完成這項工作?

我不認爲這個問題是 List comprehension with if statement 的重複,因爲我在尋找超過幾分鐘專門爲字典。

+0

嗯,我關閉了這一點,但現在回想起來,可能不是正確的重複來關閉它反對...... –

+0

這一個? http://stackoverflow.com/a/1747827/2187558 –

+0

我相對較新的python,但有其他語言的經驗。我覺得我的問題與我的特定問題有關,而不是其他人在搜索時可能出現的問題。 – Mocking

回答

4

字典理解test_copy = {k: test[k] for k in test if k not in EXCLUDED_KEYS}將完成複製。

+0

謝謝!我在沒有「測試」的情況下嘗試了幾乎相同的東西。 – Mocking

2

您需要註明「不」,在有條件的:

test_copy = {k: test[k] for k in test if k not in ('test3', 'test4')}