2012-09-08 17 views
0

我有兩個列表。排序不完全相同的列表Python

一個列表中只包含代碼例如爲:

b3b 
3cd 
6f6 
4d8 
96b 
00a 
774 
eb3 
607 
7e5 

另一個列表包含名稱代碼例如

b3b:John 
607:Eric 
7e5:Jarrold 

但是名單還沒有完善。

我希望作爲輸出,因爲另一個不能被移除並且必須按照正確的順序,例如,

b3b:John 
3cd 
6f6 
4d8 
96b 
00a 
774 
eb3 
607:Eric 
7e5:Jarrold 

已經有此代碼,但它只返回True或False,但這不是我想要的。

list1 = [line.strip() for line in open('list1')] 
list2 = [line.strip() for line in open('list2')] 

comp = [i[:3] for i in list2] 

for i in list1: 
    print(i, i in list2) 

也許任何人可以幫助我呢?

+0

第二個列表僅僅是一個字符串列表嗎? –

+0

我有兩個文本文件,我打開。文本文件的順序不能更改,只包含用戶代碼。文本文件二是具有名稱的用戶代碼。它似乎被加載到一個數組中。 – user1551585

回答

5

你應該使用一個字典映射鍵的名稱,而不是一個列表作爲第二數據結構:

with open("list1") as f: 
    keys = [line.strip() for line in f] 
with open("list2") as f: 
    names = dict(line.strip().split(":", 1) for line in f) 

現在你可以有效地實現你的循環:

for k in keys: 
    print(k, names.get(k, "")) 

執行線性搜索list2對於list1的每個條目將是相當低效的。除了更好的性能外,字典也是數據意義的更好模型。