2011-11-21 137 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文档的数据是如何创建的。