2011-11-21 120 views
0

我被給出了以下問題,並且我有點不確定。我知道這本字典包含了每個城市以及它們與每個城市的距離,但是它的結構類似於{Albury: 925,1440,352,3937,308,3583,565......}還是不同的東西?從csv文件創建字典

下表從網上下載並保存在文件distance.csv中。它規定了主要城鎮(如奧爾伯裏)和首府城市(如阿德萊德)之間以公里爲單位的道路距離。

Town,Adelaide,Brisbane,Canberra,Darwin,Melbourne,Perth,Sydney 
Albury,925,1440,352,3937,308,3583,565 
Alice Springs,1544,2998,2658,1503,2255,3549,2931 
Ballarat,618,1743,777,3645,112,3309,973 
Bendigo,639,1619,653,3671,147,3335,849 
Broken Hill,515,1545,1108,3128,825,2824,1154 
Broome,4269,4646,4975,1880,4996,2233,5112 
Cairns,3384,1699,2954,2885,3055,6050,2685 
... 

考慮下面的代碼,它加載從這個文件中的數據。

FLÝ解釋,在20-30詞語
from csv import DictReader 
def p(f): 
    a = {} 
    for row in DictReader(open(f)): 
     x = row["Town"] 
     b = {} 
     for k in row: 
      if k != "Town": 
       b[k] = int(row[k]) 
     a[x] = b 
    return a 

t = p("distances.csv") 

布里,所述代碼已被執行之後包含在變量t中的數據結構。

回答

1

如果你在腳本的底部添加

import pprint 
pprint.pprint(t) 

並執行它,你會看到你的數據結構非常清楚。它會是這個樣子:

{'Albury': {'Adelaide': 925, 
      'Brisbane': 1440, 
      (...) 
      'Sydney': 565}, 
'Alice Springs': {'Adelaide': 1544, 
        (...) 

但是,正如@sarnold在他的評論中說,因爲這氣味像功課,我要把它留給你講解的數據結構。作爲一個提示,你可能想看看DictReader文檔的數據是如何創建的。