2013-02-07 55 views
0

我的datastruture實際上是一個具有整數鍵和值爲元組列表的值的字典。 我想在列表中找到一個特定的索引。 例如:在元組列表中搜索元組值

d = {} 
d[2] = [(1,-2),(2,4),(3,2)] 
d[1] = [(1,-2),(1,4)] 

我想找到列表中的所有元組索引爲2或-2(它們可以是元組的第一或第二部件)。然後基於某些條件,我想從列表中刪除元組元素。例如,我想從列表d [2]中刪除(1,-2)。我沒有找到一個有效的方法來完成這一步,因爲我還想從d [2]中刪除它時從列表d [1]中刪除(1,-2)。

+0

什麼是索引?這些元組是什麼? – slezica

+0

對於每個字典索引說2,我有所有在第一個或第二個元組索引中包含2或-2的元組。 – vkaul11

+0

查看我的方法,並對元組對象進行排序,這會按照您始終可以從最低值到最高值刪除的順序對它們進行排序。 – Torxed

回答

1
>>> a = [(1,1), (2,2)] 
>>> if (1,1) in a: 
...  print 'Ok' 
... 
Ok 
>>> 

要刪除的東西:

>>> b = [(1,-1,(3,1),(5,2)] 
>>> filter(lambda a: a != (1,-1), b) 

應該給你:

[(3,1),(5,2)]

所以..

d = {} 
d[2] = [(1,-2),(2,4),(3,2)] 
d[1] = [(1,-2),(1,4)] 

for k, v in d.items(): 
    d[k] = filter(lambda a: a != (1,-1), v) 

這將從您的字典中完全刪除(1,-1)。

+0

Erm可能會錯過你的問題... – Torxed

+0

上面的方法刪除(1,-1)是相當低效的。條目(1,-2)只會出現在d [1]和d [2]中。所以我不想迭代完全字典來刪除(1,-2)。只有d [1]和d [2]。另外最初,我想在d [1]中搜索1或-1的實例,其中1或-1可以位於元組的第一個或第二個索引中。所以我不一定在一起搜索(1,-1)。 – vkaul11

+0

我剛剛給你一個方法來做到這一點,你如何實現它取決於你:) 如果你不喜歡,你可以選擇不遍歷整個字典:)你沒有提及任何東西關於刪除1或-1的問題,你說'想要刪除(1,-2)',這是我的功能,你可以按你的喜好調整它,並得到你需要的結果。請注意,不能從2項目元組中刪除1個值,除非重新創建元組,否則這將導致問題,所以沒有簡單的方法來刪除元組列表中的一個項目:) – Torxed