2014-05-20 48 views
0

我遇到了一些包含一些重複ID的csv數據源的問題。但最終的結果應該只有一次ID。因此,我們決定只採取我們所看到的第一個例子,而忽略其他任何情況。保留一個列表,以防止在Python中重複效率

目前我的代碼是升技這樣的:

id_list = list() 
for item in datasource: 
    if item[0] not in id_list: 
     #process 
     id_list.append(item[0]) 

的問題是,當名單不斷增加,性能下降。我想知道是否有更有效的方式來跟蹤已處理的ID?

回答

5

使用set對象,集保證沒有重複,並提供快速的會員資格測試。您可以使用set這樣

id_list = set() 
for item in datasource: 
    if item[0] not in id_list: 
     # process 
     id_list.add(item[0]) 

這將是更好的,因爲在set對象的查找會在constant time發生,而不是在linear time lookup in lists

0

除了使用列表,您可以使用由ID排序的二叉搜索樹。

1

參考this question,我會建議使用的字典。

特別是,唯一鍵的情況似乎是適當的。

然後,您可以嘗試類似:

if key not in dict: 
    [insert values in dict] 
+0

但這種方法的問題是,我們不能維持秩序,因爲它是。我們可能不得不使用'OrderedDict' – thefourtheye

+0

我沒有意識到需要排序的結果,因爲您已經注意到重複的結果... – Stefan

相關問題