2016-09-06 135 views
0

我有一個字典,每個鍵有多個值,每個值有兩個元素(可能更多)。我想遍歷每個鍵的每個值對,並刪除符合某些條件的值對。這裏例如我想刪除關鍵字A的第二個值對;即:( '好!', '0'):Python如何從具有多個值的字典鍵中刪除特定值?

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]} 

到:

myDict = {'A': [('Yes!', '8')], 'B': [('No!', '2')]} 

我可以在字典中的鍵或值迭代,但想不通我怎麼刪除具體的價值。

+0

向我們展示你的代碼 – depperm

+0

請添加您的代碼,那麼這將是容易讓我們幫助 –

+1

你可以用'pop'。在你的例子myDict ['A']。pop(1)'中。 – Tempux

回答

2

這樣的代碼:

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]} 
for v in myDict.values(): 
    if ('Ok!', '0') in v: 
     v.remove(('Ok!', '0')) 
print(myDict) 
+0

小調:如果'list's可能很長並且清除半常見,那麼最好做'try:v.remove(('Ok!','0'))','除了ValueError:pass ',所以你只需迭代一次'list',而不是一次檢查,再次刪除。另外,如果你使用的是Python 2,可以在'.values()'上使用'.itervalues()'或'.viewvalues()'來避免創建一個不必要的臨時'list'列表。在Py2上,'.values()'相當於Py2.7的'.viewvalues()',所以它會自動避免臨時對象。 – ShadowRanger

相關問題