dict不';t在visual studio(python)中工作

dict不';t在visual studio(python)中工作,python,csv,dictionary,search,visual-studio-2017,Python,Csv,Dictionary,Search,Visual Studio 2017,我正在学习cs50人工智能python课程。我试着运行包含大的.csv文件的代码,这样cs50 ide就会显示消息“killed”而不运行。它会在小的csv文件中正常运行。因此,我将目前为止的内容复制到visual studio中。VS可以毫无问题地加载大型csv文件,但它会给我一个错误“'set'对象不可订阅” 就在这里 a_id=names[source.lower()][“id”] 名称就是这样定义的 # Maps names to a set of corresponding perso

我正在学习cs50人工智能python课程。我试着运行包含大的.csv文件的代码,这样cs50 ide就会显示消息“killed”而不运行。它会在小的csv文件中正常运行。因此,我将目前为止的内容复制到visual studio中。VS可以毫无问题地加载大型csv文件,但它会给我一个错误“'set'对象不可订阅”

就在这里

a_id=names[source.lower()][“id”]

名称就是这样定义的

# Maps names to a set of corresponding person_ids
names = {}

# Maps person_ids to a dictionary of: name, birth, movies (a set of movie_ids)
people = {}

# Maps movie_ids to a dictionary of: title, year, stars (a set of person_ids)
movies = {}


def load_data(directory):
    """
    Load data from CSV files into memory.
    """
    # Load people
    with open(f"{directory}/people.csv", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        for row in reader:
            people[row["id"]] = {
                "name": row["name"],
                "birth": row["birth"],
                "movies": set()
            }
            if row["name"].lower() not in names:
                names[row["name"].lower()] = {row["id"]}
            else:
                names[row["name"].lower()].add(row["id"])

source:是来自用户的字符串变量

如果我将鼠标悬停在名称上,它会显示(名称:dict)

这里也有同样的问题

 films =  people[a_id]["movies"]
试试这个

a_id=names[source.lower()]
这将把
a_id
设置为
id
s的集合


在您的代码中,
names
是名称和id(设置类型)之间的映射。所以你基本上是在
{'actor':{1,5,3}}['actor']['id']

names[row['name]].lower()。还有其他有用的信息。你的问题与VS无关-它会在任何IDE/EDITOR中出错。你说你在
a_id=names[source.lower()][“id”]
中出错,但我在你的代码中没有看到这一行。你的信息毫无用处。我不是想把它做成一套。我试图从dict“names”中获取一个值。@tifanaser使用
{row[“id”]}
创建
set(row[“id”])
(而不是
names[row[“id”])
)中的dict(“id:row[“id”])
name[row[“name”]
-和
set()
不使用键,因此不能使用
“id”
搜索
集中的元素
。只需使用
print()
查看不同时刻变量中的内容。