将csv文件转换为python中的列表字典

2024-05-23 20:17:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,逐行查看

  1. 狮子、瞪羚
  2. 豺狼、草、斑马、瞪羚
  3. 羚羊,草
  4. 斑马,草

我想把它转换成一个字典,每一行都是它自己的列表,键是行的第一个元素。输出应该如下所示

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

Tags: 文件csvkeyinfordata字典line
3条回答

您可以使用内置的^{}模块中的^{}读取文件,然后遍历行。在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']
}

尝试:

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']
}

以下是在没有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:]

相关问题 更多 >