dict不';t在visual studio(python)中工作
我正在学习cs50人工智能python课程。我试着运行包含大的.csv文件的代码,这样cs50 ide就会显示消息“killed”而不运行。它会在小的csv文件中正常运行。因此,我将目前为止的内容复制到visual studio中。VS可以毫无问题地加载大型csv文件,但它会给我一个错误“'set'对象不可订阅” 就在这里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
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()
查看不同时刻变量中的内容。