繁体   English   中英

从CSV文件创建字典

[英]Creating a dictionary from csv file

我遇到了以下问题,但我有些不确定。 我了解该词典包​​含每个城镇及其到每个城市的距离,但是它的结构是否像{Albury: 925,1440,352,3937,308,3583,565......}或其他内容一样?

下表是从网上下载的,并保存在文件distances.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
...

考虑以下代码,该代码从该文件加载数据。

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")

Brie fl y用代码20-30个单词解释了代码执行后包含在变量t中的数据结构。

如果添加

import pprint
pprint.pprint(t)

在脚本的底部并执行它,您将非常清楚地看到数据结构。 它看起来像这样:

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

但是,正如@sarnold在他的评论中所说,由于这听起来像是作业,因此我将留给您解释数据结构。 作为提示,您可能需要查看DictReader文档以了解如何创建数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM