程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件?

开发过程中遇到如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件的问题如何解决?下面主要结合日常开发的经验,给出你关于如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件的解决方法建议,希望对你解决如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件有所启发或帮助;

我正在尝试将 csv 文件读入字典,其中对于每一行,csv 文件的第一列将是字典键,其余列将是列表中的值(忽略标题行)。

我有一个有效的解决方案,但我已经对列进行了硬编码,我想要的是可以在任意数量的列上工作的解决方案(因为我有多个 csv 文件,我想在不同数量的列上使用它)。

我在其中一个 csv 文件中的数据是:

name,test1,test2,test3
dave,66,74,62
rob,59,65,60
nic,71,68,73

这是我用过的代码

import sys
import csv

# Create a dict (where the values are a List) to store the data in memory
database = {}

# Open the csv file and read the contents into memory
filename = sys.argv[1]
with open(filename,"r") as file:
    reader = csv.reader(file)
    # Ignore the header
    next(reader)
    for row in reader:
        # Read the first column of the csv (name) as the key,then read the remaining columns as a List for the values
        database[row[0]] = [int(row[1]),int(row[2]),int(row[3])]
    print(database)

打印(数据库)的输出是

{'dave': [66,62],'rob': [59,60],'nic': [71,73]}

我遇到的问题是,当我需要读取另一个包含更多列的 csv 文件时,此代码仅适用于行 [4]、行 [5] 等的 4 列(除非我扩展它)...

有没有一种方法可以重写代码,只读取行 [1] 到 csv 文件中的行 [n]?其中 n 是 csv 文件中最后一列的编号。

非常感谢任何帮助。刚开始学习 Python,我一直在搜索,但找不到任何帮助。提前致谢。

解决方法

您需要在 csv 文件中为 ex 分隔键和值:

键 - 值 1、值 2 等,之后您可以使用拆分函数 split(“-”)

with open(“samepath.csv”) as f: 对于 f 中的行: (key,val)= line.split(“-”) dict[key]= int(val)

,

你考虑过pandas吗?

filename = sys.argv[1]
df = pd.read_csv(filename)
dct = dict(zip(df['name'],df.drop('name',axis=1).apply(list,axis=1)))

以您显示的数据为例:

>>> dct
{'dave': [66,74,62],'rob': [59,65,60],'nic': [71,68,73]}

如果你想使用 csv 和循环,你也可以这样做(我猜会更慢):

with open(filename) as file:
    reader = csv.reader(file)
    # Ignore the header
    next(reader)
    database = {row[0]: [int(x) for x in row[1:]] for row in reader}
,

或者只是使用列表理解。

if type as? Codable.Type != nil {
    print("is Codable")
} else {
    print("is NOT Codable")
}
,

您也可以在不使用 csv 模块的情况下实现这一点。

import sys

database = {}
with open(sys.argv[1],"r") as file:
    next(file)
    for line in file:
        vals = line.strip().split(",")
        database[vals[0]] = [int(val) for val in vals[1:]]

大佬总结

以上是大佬教程为你收集整理的如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件全部内容,希望文章能够帮你解决如何将 csv 读入值是列表的 dict - 然后将其用于不同的 csv 文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: