2012-02-14 163 views
0

我正在使用嵌套列表在我創建的字典中查找值。然後我想將找到的值附加到列表中。我不知道如何編碼的問題是如何將值附加在相同的嵌套列表結構中?這裏是我將最後一行附加到空列表的代碼。追加到嵌套列表

#Creating a dictionary of FID: LU_Codes from external txt file 
import sys, arcpy, string, csv 

text_file = open("H:\SWAT\NC\FID_Whole.txt", "r") 
Lines = text_file.readlines() 
text_file.close() 

FID_LU = map(string.split, Lines) 
#print FID_LU 
FID_GC_dict = dict(FID_LU) 

Neighbors_file = open("H:\SWAT\NC\Sh_Neighbors2.txt","r") 
Entries = Neighbors_file.readlines() 
Neighbors_file.close() 

Neighbors_List = map(string.split, Entries) 

print Neighbors_List 

#FID = [x[0] for x in Neighbors_List] 
#print FID 

gridList = [] 
for list in Neighbors_List: 
    for item in list: 
     #print FID_GC_dict[item] 
     gridList.append(int(FID_GC_dict[item])) 


print gridList 

下面是輸出的鄰居列表(正確):

[['0', '1', '11', '12', '13'], ['1', '0', '2', '12', '13', '14'], ['2', '1', '3', '13', '14', '15'], ['3', '2', '4', '14', '15', '16'], ['4', '3', '5', '15', '16', '17'], ['5', '4', '6', '16', '17', '18'], ['6', '5', '7', '17', '18', '19'], ['7', '6', '8', '18', '19', '20'], ['8', '7', '9', '19', '20', '21'], ['9', '8', '20', '21', '22'], ['10', '11']] 

下面是gridList(不正確)的輸出:

[3, 3, 4, 4, 4, 3, 3, 3, 4, 4, 4, 3, 3, 3, 4, 4, 2, 3, 3, 3, 4, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4] 

我想gridList的樣子是:

[[3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 2], [3, 3, 3, 4, 2, 2], [3, 3, 3, 2, 2, 2], [3, 3, 3, 2, 2, 3], [3, 3, 3, 2, 3, 3], [3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3], [3, 4]] 

任何h elp將不勝感激。我是新來的蟒蛇...閱讀帖子有幫助,但我正在努力與這一個。

謝謝!

回答

2

建立一個臨時列表,row。追加從內環的項目row,然後在外環,行追加到gridList

gridList = [] 
for nlist in Neighbors_List: 
    row = [] 
    for item in nlist: 
     row.append(int(FID_GC_dict[item])) 
    gridList.append(row) 

注意,你也可以使用這裏list comprehension

gridList = [[int(FID_GC_dict[item]) for item in nlist] 
      for nlist in Neighbors_List] 

PS。最好不要命名變量list,因爲它會隱藏相同名稱的內置類型。

0
gridList = [int(FID_GC_dict[item]) for item in l for l in Neighbors_List] 

Python的list comprehensions很棒。瞭解他們,愛他們。 (注意,這將返回一個元組列表,如果你想要一個列表的列表,你可以嵌套內涵。

另外,不要使用list作爲變量名,因爲它與內置list

1

你」衝突重新添加到單個列表中。試試這個

gridList = [] 
for list in Neighbors_List: 
    temp = [] 
    for item in list: 
     #print FID_GC_dict[item] 
     temp.append(int(FID_GC_dict[item])) 
    gridList.append(temp)