函数从字典中输入键和值,从给定的输入位置(csv文件)提取数据行,并输出d行

2024-09-25 00:29:28 发布

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

我有megadict,一个字典,里面有匹配的键和值,对应于csv文件中的标题和行。函数fill_lists应该输入一个键和值,将该键转换为一个空列表,然后用相应值的数据填充该空列表。此函数的工作原理与对函数的单个调用相同,但在遍历字典时失败。如何更改代码,使其在megadict上迭代,将每个键转换为一个列表,然后用相应值的数据填充每个列表?谢谢!你知道吗

CSV文件:Campus\u Culture3.CSV

user,year,university,school,
U1,Sophomore,Temple University,Fox School of Business
U2,Sophomore,Drexel University,School of Business
U3,Sophomore,The Catholic University of America,School of Theatre

程序

megadict = {'user': 0, 'year': 1, 'university': 2, 'school': 3}

import csv 
filename = "Campus_Culture_Test3.csv"
with open(filename, 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    def fill_lists(key, val):
        key = []
        for line in csvreader:
            key.append(line[val])
        del key[0]
        print(key)

输入

 for key, val in megadict.items():
        fill_lists(key, val)

期望输出

['U1', 'U2', 'U3']
['Sophmore', 'Sophmore', 'Sophmore']
['Temple University', 'Drexel University', 'The Catholic University Of America']
['Fox School of Business', 'School of Business', 'School of Theatre']

Tags: ofcsvkey函数列表字典valbusiness
2条回答

示例:

d={'head1': 'line1', 'head': 'line2', 'head2': 'line3'}
l=[]
for key,val in d.items():
    entry=[key,val]
    l.append(entry)

如果您不希望该键是空值,则插入 第3行和第4行之间的key=''

现在也许你是这个意思??你知道吗

l=[]
for val,info in zip(d.values(),csvreader):
    entry=[val,info]
    l.append(entry)

输出:

[['line1', 'information1'], ['line2', 'information2'], ['line3', 'information3']]

(这一开始只是一个评论,但它变得冗长而复杂。)

我认为您试图使用key作为指针,但Python不是这样工作的。它更像一个引用,因为它是不可变的,所以它的行为就像一个值。不管怎样,关键是当您在函数中赋值给key时,它是函数的局部变量。您需要传入dict来填充,在函数中构造dict并返回它,或者返回一个列表并将其分配给周围范围中的dict。你知道吗

但也就是说,这是一个XY problem。您希望读入一个表并提取其列,但是您的算法读取该表并提取一列,然后再次读取该表并提取下一列,等等。将表读取一次然后提取其列更有意义。如何做到这一点是我将留给你们的另一个问题,尽管有一种方法是pandas.dataframe。你知道吗

相关问题 更多 >