Как создать список, с которым можно будет взаимодействовать в консоли?

Добрый день, Habr. У меня есть проект по парсингу вакансий с сайта Центра занятости. Пользователь вводит название вакансии через консоль, после чего ему предлагается выбрать регион для поиска из следующего списка: <br/> <br/> region_name = ["Любая", "Брестская", "Витебская", "Гомельская", "Гродненская", "Минск", "Минская", "Могилевская"] <br/> <br/> Теперь я хотел бы добавить возможность выбора района. Однако, у каждой области свои районы, и фильтр для выбора районов отсутствует, если выбран пункт "Любая". Как лучше организовать эту выборку? Возможно, стоит использовать словари?
  • 14 марта 2025 г. 9:04
Ответы на вопрос 2
Да, использование словарей — это подходящее решение для вашей задачи. Вы можете создать словарь, где ключи будут обозначать регионы, а значениями — списки районов, соответствующих каждому региону. Это позволит вам динамически подстраивать выбор районов в зависимости от выбранного региона.

Пример реализации может выглядеть следующим образом:

```python
# Словарь с регионами и соответствующими районами
regions = {
    "Любая": [],
    "Брестская": ["Брест", "Пинск", "Лунинец", "Березовка", "Дрогичин"],
    "Витебская": ["Витебск", "Полоцк", "Новополоцк", "Орша", "Глубокое"],
    "Гомельская": ["Гомель", "Мозырь", "Светлогорск", "Речица", "Гомель"],
    "Гродненская": ["Гродно", "Слоним", "Лида", "Березовка", "Ошмяны"],
    "Минск": ["Минск"],
    "Минская": ["Солигорск", "Сморгонь", "Борисов", "Логойск"],
    "Могилевская": ["Могилев", "Бобруйск", "Осиповичи", "Слуцк", "Круглое"]
}

# Функция для выбора региона и района
def choose_region_and_district():
    print("Выберите регион:")
    for i, region in enumerate(regions.keys()):
        print(f"{i + 1}. {region}")

    region_choice = int(input("Введите номер региона: ")) - 1
    region_name = list(regions.keys())[region_choice]
    
    if region_name == "Любая":
        print("Вы выбрали регион: " + region_name + ". Рекомендуется выбирать конкретный регион для большей точности.")
        return region_name, []
    else:
        print("Выберите район:")
        for i, district in enumerate(regions[region_name]):
            print(f"{i + 1}. {district}")

        district_choice = int(input("Введите номер района: ")) - 1
        district_name = regions[region_name][district_choice]
        return region_name, district_name

# Пример использования функции
selected_region, selected_district = choose_region_and_district()
print(f"Вы выбрали регион: {selected_region}, район: {selected_district}")
```

### Что делает этот код:
1. Создает словарь `regions`, где ключи — это названия регионов, а значения — списки районов.
2. Определяет функцию `choose_region_and_district`, которая позволяет пользователю выбрать регион.
3. Если выбран регион "Любая", программа уведомляет пользователя об этом и возвращает пустой список районов.
4. Если выбран конкретный регион, пользователю предлагается выбрать район из соответствующего списока.
5. В конце выводится выбранный регион и район.

Таким образом, ваш код станет более структурированным и удобным для пользователя.
1) Указывайте язык, который используете, телепаты в отпуске. Ок, из кода понятно что питон, но в вопросе об этом ничего не написано. 
2) Так как структура данных у вас хранится в коде (что однозначно не айс), подойдут словари с соответствующей вложенностью - регион : области. Из него через .keys() и list() получаем регионы, а по регионам уже и области в виде списка получить можно. Алсо, я бы хранил словарь в отдельном файле как json, что сделает работу с кодом независимой от данных.
3) Все еще не вижу причин издеваться над пользователем через консоль. Страничка с 2 полями и запрос на сервер, вроде в питоне даже свой какой-то вебсервер есть искаропки.
Похожие вопросы