2015-09-17 55 views
0

我正在尋找有關從csv文件返回結果FORMAT的指導。我至少有部分代碼符合我的目標,但儘管通過這個以及其他許多網站/論壇進行了大量的研究,但我無法解決最後一步。我也在gis.stackexchange上提出了這個問題,但是被重定向到了這個論壇,其評論「關於一般信息技術的問題,沒有明確的GIS組件,在這裏是焦點話題,但是可以在Stack Overflow上研究/詢問」如何修改使用python從csv調用返回的數據格式

我成功的一段python代碼,它從csv中讀取選定的數據並以字典格式返回它,如下所示; (是的,我知道它返回類型字典的原因是由於我的代碼是調用!!!格式,這是問題的癥結所在)

import arcpy, csv 
Att_Dict ={} 
with open ("C:/Data/Code/Python/Library/Peter/123.csv") as f: 
    reader = csv.DictReader(f) 
    for row in reader: 
     if row['Status']=='Keep': 
      Att_Dict.update({row['book_id']:row['book_ref']}) 
print Att_Dict 

Att_Dict = {'7643': '7625', '9644': '2289', '4406': '4443', '7588': '9681', '2252': '7947'} 

對於我的代碼的下一部分來運行,我需要上面的結果,但格式爲; (這是一個非常漫長的代碼的一部分,但只顯示塞是返回格式張貼等200行左右所以價值不大)

Att_Dict = [[7643, 7625], [9644, 2289], [4406, 4443], [7588, 9681], [2252, 7947]] 

雖然我已經無數次試驗,並可以通過恢復到CSV實現這一目標.Reader而不是csv.DictReader,那麼我就失去了'清除'列'狀態'具有值'保留'在內的行的能力,並且這是當前任務的要求。

我迄今爲止的大錘方法是在空閒狀態下使用'搜索和替換'來修改返回的集合以滿足其他要求,但是我確定它可以通過編程方式而不是手動完成。與https://docs.python.org/2/library/index.html相似但不完全相同,加上我的開始問題Returning values from multiple CSV columns to Python dictionary?Using Python's csv.dictreader to search for specific key to then print its value加上geonet.esri上的許多基於csv的問題。

(使用Win 7的時,ArcGIS 10.2的Python 2.7.5)

回答

1

試試這個

Att_Dict = {'7643': '7625', '9644': '2289', '4406': '4443', '7588': '9681', '2252': '7947'} 
Att_List = [] 
for key, value in Att_Dict.items(): 
    Att_List.append([int(key), int(value)]) 

print Att_List 

Out: [[7643, 7625], [9644, 2289], [4406, 4443], [7588, 9681], [2252, 7947]] 
+0

指定的Python 2.7.5的問題,所以我覺得iteritems()應使用通過迭代字典。 – TomAdair

+0

完美謝謝@enu-s。這給了我一直在尋找的結果。 – user1995458

相關問題