我有一个CSV文件,它逐行查看
gazelle
我想把它转换成字典,其中每一行都是自己的列表,键是行的第一个元素。输出应该如下所示
d=open("example.csv")
data={}
l=[]
for line in d.read():
l.append(line)
for line in l:
key=line[0]
data[key]=line[1:]
print(data)输出应该如下所示
gazelle: grass
jackal: grass, zebra, gazelle
lion: gazelle
zebra: grass发布于 2020-04-01 03:14:39
尝试:
import csv
reader = csv.reader(open('example.csv', 'r'))
d = {}
for row in reader:
d[row[0]] = row[1::]
print(d)投入:
lion,gazelle
jackle,grass,zebra,gazelle
gazelle,grass
zebra,grass产出:
{
'lion': ['gazelle'],
'zebra': ['grass'],
'jackle': ['grass', 'zebra', 'gazelle'],
'gazelle': ['grass']
}发布于 2020-04-01 03:14:52
您可以使用内置csv.reader()模块中的csv读取文件,然后循环遍历行。在dict上创建一个条目,每一行上的第一个元素作为key,行的其余部分作为value列表。注意,内联三元操作符(stmt if condition else stmt)只是为了避免在行中只有一个元素时使用exception。
输入:
lion,gazelle
jackle,grass,zebra,gazelle
gazelle,grass
zebra,grass你可以用这个片段:
import csv
outputDict = {}
with open("file.csv", newline="") as csvfile:
data = csv.reader(csvfile, delimiter=",")
for row in data:
outputDict[row[0]] = row[1:] if len(row) > 1 else []
print(outputDict)输出:
{
'lion': ['gazelle'],
'jackle': ['grass', 'zebra', 'gazelle'],
'gazelle': ['grass'],
'zebra': ['grass']
}发布于 2020-04-01 03:21:06
下面是另一种不使用csv模块进行相同操作的方法:
with open("example.csv", "r") as f:
lines = f.readlines()
my_dict = {}
for line in lines:
words = line.strip("\n").split(", ")
my_dict[words[0]] = words[1:]https://stackoverflow.com/questions/60963003
复制相似问题