使用嵌套列表创建进行Python CSV导入

Fra*_*rin 3 python dictionary list dataformat opencsv

我试图简单地将.csv导入Python.我读过很多文件但是对于我的生活,我无法弄清楚如何做到以下几点.

CSV格式如下

NYC,22,55
BOSTON,39,22
Run Code Online (Sandbox Code Playgroud)

我正在尝试生成以下内容:{NYC = [22,55],BOSTON = [39,22]}以便我可以在每个变量的循环中调用i [0]和i [1].

我试过了

import csv
input_file = csv.DictReader(open("C:\Python\Sandbox\longlat.csv"))

for row in input_file:
print(row)
Run Code Online (Sandbox Code Playgroud)

这打印我的变量,但我不知道在城市名称中嵌套两个数值并生成我希望得到的列表.

谢谢你的帮助,抱歉我的菜鸟问题 -

Wil*_*sem 5

使用字典理解:

import csv

with open(r'C:\Python\Sandbox\longlat.csv', mode='r') as csvfile:
    csvread = csv.reader(csvfile)
    result = {k: [int(c) for c in cs] for k, *cs in csvread}
Run Code Online (Sandbox Code Playgroud)

这适用于,并在我的机器上生成:

>>> result
{'NYC': [22, 55], 'BOSTON': [39, 22]}
Run Code Online (Sandbox Code Playgroud)

它也适用于任意数量的列.

如果你使用,你可以在序列解包上使用索引和切片:

import csv

with open(r'C:\Python\Sandbox\longlat.csv', mode='r') as csvfile:
    csvread = csv.reader(csvfile)
    result = {row[0]: [int(c) for c in row[1:]] for row in csvread}
Run Code Online (Sandbox Code Playgroud)


lmi*_*asf 5

如果您不熟悉 python 推导式,可以使用以下使用 for 循环的代码:

import csv

with open('C:\Python\Sandbox\longlat.csv', 'r') as f:
    reader = csv.reader(f)
    result = {}
    for row in reader:
        result[row[0]] = row[1:]
Run Code Online (Sandbox Code Playgroud)

如果您希望数字是字符串,则前面的代码有效,如果您希望它们是数字,请使用:

import csv

with open('C:\Python\Sandbox\longlat.csv', 'r') as f:
    reader = csv.reader(f)
    result = {}
    for row in reader:
        result[row[0]] = [int(e) for i in row[1:]] # float instead of int is also valid
Run Code Online (Sandbox Code Playgroud)