Python 枚举元组列表时,我得到TypeError:';类型';对象没有属性'__获取项目';

Python 枚举元组列表时,我得到TypeError:';类型';对象没有属性'__获取项目';,python,csv,tuples,typeerror,Python,Csv,Tuples,Typeerror,下面的脚本读取一个CSV文件并创建一个名为people的元组列表。元组是用户id(一个唯一的字符串标识符)和个人信息字典 对于如下所示的数据示例(简化,删除名称信息): patron_id show_id 1111MAIN MW1 2222SCOTT MW2 1111MAIN MW1 脚本应输出元组列表,如下所示: patron_id show_id 1111MAIN MW1 2222SCOTT MW2 1111MAIN

下面的脚本读取一个CSV文件并创建一个名为
people
的元组列表。元组是
用户id
(一个唯一的字符串标识符)和
个人
信息字典

对于如下所示的数据示例(简化,删除名称信息):

patron_id    show_id
1111MAIN       MW1
2222SCOTT      MW2
1111MAIN       MW1
脚本应输出元组列表,如下所示:

patron_id    show_id
1111MAIN       MW1
2222SCOTT      MW2
1111MAIN       MW1
[
(“1111MAIN”,{'patron_id':'1111MAIN','show_list':[“MW1”,“MW2”]}),
(“2222SCOTT”,{'patron_id':'2222SCOTT','show_list':[“MW2”]})
]

脚本在回溯中引发以下错误:

文件“frequency.py”,第75行,在
main(“input.csv”)
文件“frequency.py”,第35行,主
人员索引=[x代表x,y在枚举[人员]中,如果y[0]==用户id]

当我在shell中手动测试这一行时,它返回我正在搜索的元组的索引。为什么这一行在脚本中失败了

import csv

def main(filename):
    people = [] #list of person tuples
    person = {} #patron info with list of unique shows

    #open csv data
    csv_file = csv.reader(open(filename, 'rb'))

    #read and define CSV data
    for record in csv_file:
        show_list = []

        patron_id = record[0]
        first_name = record[1]
        last_name = record[2]
        show_name = record[3]

        #check if this is the first row
        if len(people) == 0:
            show_list.append(show_name)
            person = (patron_id, {'patron_id': patron_id, 'first_name': first_name, 'last_name': last_name, 'show_list': show_list})
            people.append(person)

        else:

            #if this person IS in the list of people
            if any(patron_id in person for person in people) == True:
                #retrieve this person from people by finding its index          
                person_index = [x for x, y in enumerate[people] if y[0] == patron_id][0]

您需要将
枚举[人员]
更改为
枚举(人员)
。当您使用括号时,python认为您试图访问位于
人员
位置的
枚举
。相反,您需要调用它。

您需要将
枚举[people]
更改为
枚举(people)
。当您使用括号时,python认为您试图访问位于
人员
位置的
枚举
。相反,您需要调用它。

正如我在评论中所述,问题是您试图使用方括号调用
枚举
\uuuuu getitem\uuuu
方法,这肯定会失败,因为它没有此方法。要构造枚举对象,请使用括号


尽量密切注意错误消息,它们通常是有用的。我不需要阅读您的全部代码就可以找到错误。

好吧,正如我在评论中所说的,问题是您试图使用方括号调用
枚举
\uuuu getitem\uuuu
方法,这肯定会失败,因为它没有这个方法。要构造枚举对象,请使用括号


尽量密切注意错误消息,它们通常是有用的。我不需要阅读你的全部代码就可以找到错误。

枚举[人]
->
枚举(人)
我觉得很可笑。如果你把它作为一个答案,我会选择它。
列举[人]
->
列举(人)
我觉得很可笑。如果你将其作为一个答案发布,我会选择它。我标记timgeb作为答案,因为他击败了你,但作为一个评论-这是完全正确的。我标记timgeb作为答案,因为他击败了你,但作为一个评论-这是完全正确的。谢谢你的快速帮助-就像我说的,我觉得很傻!谢谢你的快速帮助-就像我说的,我觉得很傻!