无法从Python函数返回列表元素
我有一个函数table,它读取csv文件并返回各个列表中的行。我想映射这些列表来创建一个字典,字段头是键,底层行是值。然而,我似乎不能这样做。当我试图在命令提示符中仅调用我从函数l创建的列表列表中的第一个元素时,它将返回所有列表,直到“N”,即单词“None”中的第一个字母,尽管我在reader为None时中断了return。当我对文本文件的sys.stdout执行相同的操作时,它也执行相同的操作,但是'N'被替换为。有人知道我做错了什么,以及我如何从给定表函数的CSV文件创建字典或列列表吗无法从Python函数返回列表元素,python,csv,dictionary,Python,Csv,Dictionary,我有一个函数table,它读取csv文件并返回各个列表中的行。我想映射这些列表来创建一个字典,字段头是键,底层行是值。然而,我似乎不能这样做。当我试图在命令提示符中仅调用我从函数l创建的列表列表中的第一个元素时,它将返回所有列表,直到“N”,即单词“None”中的第一个字母,尽管我在reader为None时中断了return。当我对文本文件的sys.stdout执行相同的操作时,它也执行相同的操作,但是'N'被替换为。有人知道我做错了什么,以及我如何从给定表函数的CSV文件创建字典或列列表吗 i
import csv
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
if reader is None:
return
l = list(str(table()))
keys = l[0]
print keys
输出文本文件:
['Field1', 'Field2', 'Field3', 'Field4']
['a', '1', 'I', 'access']
['b', '2', 'II', 'accessing\n']
['c', '3', 'III', 'accommodation']
['d', '4', 'IIII', 'basically']
<type 'list'>
实际上,您不会从table函数返回任何内容。试着这样做:
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
lines = []
reader = csv.reader(f)
if reader:
for row in reader:
lines.append(row)
return lines
else:
return []
实际上,您不会从table函数返回任何内容。试着这样做:
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
lines = []
reader = csv.reader(f)
if reader:
for row in reader:
lines.append(row)
return lines
else:
return []
更像蟒蛇
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
yield row
更像蟒蛇
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
yield row
我希望他们能从我这里退让。我对from uu future uuu import收益率声明感到失望。@jdotjdot这是一个可爱的特性。当我不在3.3的时候,我真的很想念它。我希望他们能从我的产品中退出来。我对from uu future uuu import收益率声明感到失望。@jdotjdot这是一个可爱的特性。我真的很怀念我不在3.3的时候。谢谢你们两位。然而,当我试图从表中创建列字典时,最奇怪的事情出现了。标题被指定为键,表内容被指定为值,正如我所期望的那样。但是,与行匹配的标题1与行1匹配,而不是与我期望的列匹配。以下解决方案有帮助:l=表键=l[0]值=l[1:]值=zip*值字典=dictzipkeys,值打印字典Excellent。谢谢你们两位。然而,当我试图从表中创建列字典时,最奇怪的事情出现了。标题被指定为键,表内容被指定为值,正如我所期望的那样。但是,与行匹配的标题1与行1匹配,而不是与我期望的列匹配。以下解决方案有帮助:l=table keys=l[0]value=l[1:]values=zip*value dictionary=dictzipkeys,values print dictionary