dict не работает в Visual Studio (python) - PullRequest
0 голосов
/ 07 мая 2020

Я беру курс cs50 ai python. Я пытался запустить код, который включал большие файлы .csv, чтобы cs50 ide отображал сообщение «убит» и не запускался. Он работал нормально с небольшими файлами csv. поэтому я скопировал то, что у меня было до сих пор, в визуальную студию. 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: это строковая переменная от пользователя.

если я наведу курсор на имя, оно говорит (name : dict)

здесь та же проблема

 films =  people[a_id]["movies"]

1 Ответ

0 голосов
/ 07 мая 2020

Попробуйте вместо этого

a_id = names[source.lower()]

Это установит a_id в набор id s.

В вашем коде names - это сопоставление между именем и идентификатором ( который установлен тип). Итак, вы в основном пробовали такие вещи, как {'actor': {1, 5, 3}}['actor']['id'].

...