В дополнение к инициализации значения каждого «new_thing» до 0 (cloud[new_thing] = 0
), как отмечали другие, существует еще одна серьезная проблема: вы пытаетесь выполнить итерацию по cloud
перед добавлением к ней какого-либо элемента (таким образом, for new_thing in cloud:
и его блок эффективно ничего не делают, потому что cloud
пуст). Это необязательно, поскольку словари доступны не последовательно.
Вы можете либо заменить
new_thing = thing.strip(string.punctuation)
cloud[new_thing] = 0
for new_thing in cloud:
cloud[new_thing] = cloud.get(new_thing, 0) + 1
просто:
new_thing = thing.strip(string.punctuation)
cloud[new_thing] = cloud.get(new_thing, 0) + 1
, либо использовать кнопку collections.Counter
, который, как утверждают другие, уже делает то, что вы пытаетесь выполнить, и, вероятно, облегчит задачу.
Если у вас есть данные, вы можете использовать алгоритм Дейкстры, чтобы получить краткий путь между узлами в графе. Создать граф с узлами, представляющими местоположение шины
.