2012-02-14 15 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は高く評価されます。私はpythonには新しいです...記事を読むことは助けになりますが、私はこの問題に苦しんでいます。

ありがとうございます!

答えて

2

一時的なリストをrowにしてください。 rowに内側のループからアイテムを追加して、外側のループで、gridListに行を追加します。

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

PS:あなたもここにlist comprehensionを使用することができ

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

注意。変数listの名前は同じ名前の組み込み型を陰にしているので、名前を付けないのが最善です。

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

Pythonのlist comprehensionsは素晴らしいです。学んで、愛してください。 (ネストでき内包、あなたはリストのリストをしたい場合、これは、タプルのリストを返します注意してください。

をまた、変数名としてlistを使用していない、それは組み込みlist

1

あなた」で競合として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) 
関連する問題