大佬教程收集整理的这篇文章主要介绍了如何将 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,请注明来意。