我有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']
示例:
如果您不希望该键是空值,则插入 第3行和第4行之间的
key=''
现在也许你是这个意思??你知道吗
输出:
(这一开始只是一个评论,但它变得冗长而复杂。)
我认为您试图使用
key
作为指针,但Python不是这样工作的。它更像一个引用,因为它是不可变的,所以它的行为就像一个值。不管怎样,关键是当您在函数中赋值给key
时,它是函数的局部变量。您需要传入dict来填充,在函数中构造dict并返回它,或者返回一个列表并将其分配给周围范围中的dict。你知道吗但也就是说,这是一个XY problem。您希望读入一个表并提取其列,但是您的算法读取该表并提取一列,然后再次读取该表并提取下一列,等等。将表读取一次并然后提取其列更有意义。如何做到这一点是我将留给你们的另一个问题,尽管有一种方法是
pandas.dataframe
。你知道吗相关问题 更多 >
编程相关推荐