无法从Python函数返回列表元素

无法从Python函数返回列表元素,python,csv,dictionary,Python,Csv,Dictionary,我有一个函数table,它读取csv文件并返回各个列表中的行。我想映射这些列表来创建一个字典,字段头是键,底层行是值。然而,我似乎不能这样做。当我试图在命令提示符中仅调用我从函数l创建的列表列表中的第一个元素时,它将返回所有列表,直到“N”,即单词“None”中的第一个字母,尽管我在reader为None时中断了return。当我对文本文件的sys.stdout执行相同的操作时,它也执行相同的操作,但是'N'被替换为。有人知道我做错了什么,以及我如何从给定表函数的CSV文件创建字典或列列表吗 i

我有一个函数table,它读取csv文件并返回各个列表中的行。我想映射这些列表来创建一个字典,字段头是键,底层行是值。然而,我似乎不能这样做。当我试图在命令提示符中仅调用我从函数l创建的列表列表中的第一个元素时,它将返回所有列表,直到“N”,即单词“None”中的第一个字母,尽管我在reader为None时中断了return。当我对文本文件的sys.stdout执行相同的操作时,它也执行相同的操作,但是'N'被替换为。有人知道我做错了什么,以及我如何从给定表函数的CSV文件创建字典或列列表吗

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