读取CSV文件并确定数据结构

时间:2016-09-15 07:49:59

标签: python csv data-structures types

我正在使用一个相当基本的CSV文件来描述四个城市以及它们之间的距离。因此,目标是从所述文件中检索信息,并使用Python进行进一步的操作。

Excel文件

该文件在Excel中构建如下:

cities.csv file

CSV文件

导出为CSV时,文件表示如下:

,OSL,CPH,LDN,TKO
OSL,0,2,4,10
CPH,2,0,2,9
LDN,4,2,0,12
TKO,10,9,12,0

获取城市

显然,第一行包含所有城市,以及第一个空白单元格。我已经完成以下操作来检索城市,不包括空白单元格:

def get_cities(file):
  reader = csv.reader(file)

  cities = []

  row1 = next(reader)
  cities.extend(row1[1:]) #exclude first cell (blank)
  print cities

屈服:

['OSL', 'CPH', 'LDN', 'TKO']

映射城市和它们之间的距离

完成后,我现在可以读取文件的其余部分,以便检索城市之间的距离。

然而,我发现很难想出一种将此信息表示为数据结构的好方法。最理想的是,我希望能够检查任何两个城市之间的距离。

有关如何实施此建议的任何建议,我们将不胜感激。

如何才能最好地代表此信息以便轻松查找距离?

2 个答案:

答案 0 :(得分:1)

似乎您的数据直接表示图形的邻接矩阵。将其存储为邻接矩阵,只需对(city1,city2)进行简单查找即可。对于实施,您可以在城市中进行枚举。

答案 1 :(得分:0)

使用dicts的词典。这不是内存效率,但是使用内置python容器的最简单的解决方案。

    map = {'OSL' :
        {
            'OSL' : 0,
            'CPH' : 2,
            ...
        },
     'CPH' :
        {
            ...
        },
     ...
    }

然后你可以像地图['OSL'] ['CPH']一样查找距离。