Похоже, что row['Distance']
возвращает не словарь, а строку. (если нет, дайте полный воспроизводимый пример)
Итак, после dictp = row['Distance']
dictp
- это строка.
for key in dictp
вернет каждую букву строки.
print(dictp[key])
вызовет ошибку, потому что для строк key
должно быть числом.
Вы можете проверить, является ли это вашей проблемой, набрав type(dictp)
после dictp=row['Distance']
строка. Если это печатает str
, то причина в этом.
Вот как вы можете это исправить:
Вы можете преобразовать строку в настоящий словарь с помощью функции eval()
.
Как это:
dictp = "{'08001': 0, '08002': 2.2, '08003': 2.2}"
mydict = eval(dictp)
Обратите внимание, что это угроза безопасности, если вы не можете гарантировать, что действительно существует dict для всех строк, потому что он запускает код.