2012-04-29 130 views
4

舉例來說,如果我有百萬條記錄與 {(1,2):3,(2,3):4,(3:2):5...xmillion} 形式的字典,是一個元組作爲一個重要的內部和具有對應的值快速訪問

我會喜歡做的就是其中的元組的值[1] = 2 我的一個辦法是

for item, value in dict.iteritems(): 
     if item[1] == 2: 
     Do operations here... 

這是一個緩慢的做法,是否有這樣做的,使其快速更好的算法中的數據? 像..所以我沒有去通過項目的百萬

+2

您是否有靈活性來更改字典結構?將它存儲爲{1:{2:3},2:{3:4}}等將使這種訪問更容易。 – 2012-04-29 08:32:45

+0

否則,如果您需要頻繁查找,您還可以維護另一個散列表以快速查找。 – 2012-04-29 08:35:02

+0

@DanielRoseman你確定這是你的意思嗎? OP希望'item [1] == 2'不是'item [0] == 2'。 – katrielalex 2012-04-29 08:35:20

回答

1

在一個以元組爲關鍵字的字典中,您必須遍歷所有關鍵字才能找到 與key[1] == 2。解決問題沒有其他選擇。

0

如果你有{(a,b):c}字典中則沒有,你不能做任何更好:因爲你不知道哪鑰匙有b=2你必須看看他們。

如果你自己創建字典,你可以在那個階段用b=2分開元組,所以你不必再次搜索它們。您可以將它們存儲在單獨的字典中(只是項目{(a,2):c}),或者重寫您擁有的字典的結構(例如{b:{(a,b):c}})。