Обычный словарь dict

Вторым вариантом структуры, которой тут можно воспользоваться — это словарь, просто обычный dict:

# Совсем плохо! Что за dict, что внутри в нём?
def get_gps_coordinates() -> dict:
    return {"longitude": 10, "latitude": 20}

# Так лучше, хотя бы прописаны типы для ключей и значений
def get_gps_coordinates() -> dict[str, float]:
    return {"longitude": 10, "latitude": 20}

coords = get_gps_coordinates()
print(coords["longitude"])  # IDE не покажет опечатку в `longitude`

Как видно, при вводе ключа словаря longitude IDE нам не подсказывает и нет никакой проверки на опечатки. Если мы опечатаемся в ключе словаря, то эта ошибка может дойти до рантайма и уже в рантайме упадёт ошибка KeyError. Хочется, чтобы IDE и статический анализатор кода вроде mypy, о котором поговорим позднее, помогали нам, а чтобы они нам помогали, надо чётко прописывать типы данных и dict это не то, что нам нужно.