TypeError: 'builtin_function_or_method' object is not subscriptable как исправить эту ошибку?
from pprint import pprint
geo_logs = [
{'visit1': ['Москва', 'Россия']},
{'visit2': ['Дели', 'Индия']},
{'visit3': ['Владимир', 'Россия']},
{'visit4': ['Лиссабон', 'Португалия']},
{'visit5': ['Париж', 'Франция']},
{'visit6': ['Лиссабон', 'Португалия']},
{'visit7': ['Тула', 'Россия']},
{'visit8': ['Тула', 'Россия']},
{'visit9': ['Курск', 'Россия']},
{'visit10': ['Архангельск', 'Россия']}
]
for geo_logs2 in geo_logs:
geo = list(geo_logs2.values[0])
if geo[1] == "Россия":
geo_logs.setdefault("[]")
geo_logs.append(geo_logs2)
pprint(geo_logs2)
geo = list(geo_logs2.values[0])
TypeError: 'builtin_function_or_method' object is not subscriptable
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Во-первых вам надо сдвинуть вправо на табуляцию весь код после строки с циклом for. Далее, про строку с ошибкой:
geo = list(geo_logs2.values[0])
dict.values - это функция, её надо вызывать со скобками, а индексировать вам надо список, в который вы преобразуете значения словаря, а не сами значения:
geo = list(geo_logs2.values())[0]
Но дальше у вас всё-равно вылезет ошибка в строке:
geo_logs.setdefault("[]")
И вообще непонятно, что вы дальше делаете - вы добавляете элементы в список, по которому итерируетесь, поэтому список будет расти бесконечно и программа зациклится, если вы просто закомментируете строку с setdefault. Вам надо разбираться, что вы вообще хотите сделать и менять алгоритм действий.