2013-06-28 55 views
1

嘿,我有字典像下面一個Python從字典中誰具有相同的值刪除這些密鑰

dicts = { 
'met_293':['81.0175','4','7','7','29.76','23','1','0','22','28.57','2','[KG]EHY' ], 
'met_394':['79.9579','4','7','7','29.76','18','3','0','15','28.57','2','EHY[ILV]'], 
'met_309':['81.0175','4','7','7','29.76','23','1','0','22','28.57','2','[KG]EHY' ], 
'met_387':['79.9579','4','7','7','29.76','18','3','0','15','28.57','2','EHY[ILV]'] 
} 

我想刪除它有一個像「met_293」和「met_309」這兩個鍵具有相同的值相同的值的鍵在'[KG] EHY'的第12位,所以我想我這樣的字典

{ 
'met_293':['81.0175','4','7','7','29.76','23','1','0','22','28.57','2','[KG]EHY'], 
'met_394':['79.9579','4','7','7','29.76','18','3','0','15','28.57','2','EHY[ILV]'] 
} 

任何幫助! 感謝

+1

你會更容易,如果你告訴我們得到答案你已經嘗試過了。 – That1Guy

+0

你的意思是刪除*一個*鍵的權利? –

回答

4

您可以使用set和字典理解:

>>> dicts = {'met_293': ['81.0175','4','7','7','29.76','23','1','0','22','28.57','2','[KG]EHY'],'met_394': ['79.9579','4','7','7','29.76','18','3','0','15','28.57','2','EHY[ILV]'],'met_309': ['81.0175','4','7','7','29.76','23','1','0','22','28.57','2','[KG]EHY'],'met_387': ['79.9579','4','7','7','29.76','18','3','0','15','28.57','2','EHY[ILV]']} 
>>> seen = set() 
>>> {k:v for k,v in dicts.iteritems() 
           if v[11] not in seen and not seen.add(v[11])} 
{'met_394': ['79.9579', '4', '7', '7', '29.76', '18', '3', '0', '15', '28.57', '2', 'EHY[ILV]'], 
'met_293': ['81.0175', '4', '7', '7', '29.76', '23', '1', '0', '22', '28.57', '2', '[KG]EHY']} 

上面的代碼等同於:

>>> dic = {} 
>>> seen = set() 
>>> for k,v in dicts.iteritems(): 
...  if v[11] not in seen: 
...   dic[k] = v 
...   seen.add(v[11]) 
...   
>>> dic 
{'met_394': ['79.9579', '4', '7', '7', '29.76', '18', '3', '0', '15', '28.57', '2', 'EHY[ILV]'], 
'met_293': ['81.0175', '4', '7', '7', '29.76', '23', '1', '0', '22', '28.57', '2', '[KG]EHY']} 
+0

謝謝,它的工作現在完美了 – Paul85

相關問題