Фильтрация элементов списка в словарь по префиксу

Будет выведено {3: 'pineapple', 4: 'pear'}. enumerate выдаёт исходные индексы, а фильтрация не перенумеровывает выбранные элементы.

Короткий ответ

Что ответить на собеседовании

Будет выведено {3: 'pineapple', 4: 'pear'}. enumerate выдаёт исходные индексы, а фильтрация не перенумеровывает выбранные элементы.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какой результат будет выведен на экран. Убедитесь, что вы понимаете, как работает генератор словаря с условием и методом startswith().

fruit_list = ['apple', 'orange', 'lemon', 'pineapple', 'pear']
result_dict = {
    i: f
    for i, f in enumerate(fruit_list)
    if f.startswith('p')
}
print(result_dict)

Ответ

Будет выведено {3: 'pineapple', 4: 'pear'}. enumerate выдаёт исходные индексы, а фильтрация не перенумеровывает выбранные элементы.

enumerate последовательно формирует пары (0, 'apple'), (1, 'orange') и далее. Условие f.startswith('p') истинно только для последних двух фруктов.

{3: 'pineapple', 4: 'pear'}

Метод проверяет начало строки, а не наличие буквы в произвольной позиции. Поэтому apple, несмотря на содержащиеся в нём p, не подходит. Если нужны ключи 0 и 1 для уже отобранных значений, сначала отфильтруйте последовательность, а затем примените enumerate. В текущем коде сохраняется связь с позициями исходного списка.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее