Вы можете использовать operator.itemgetter
, чтобы выбрать только индексы certian в списке или ключи в dict.
from operator import itemgetter
data = [1, 2, 3, 4, 5, 6, 7, 8]
get_indexes = itemgetter(2, 5, 7)
#this will return indexes 2, 5, 7 from a sequence
sum(get_indexes(data)) #3+6+8
#returns 17
Этот пример для списков, но вы можете использовать itemgetter для ключей dict, просто используйте itemgetter('key2', 'key5', 'key7')({some_dict})
Чтобы получить только четные или нечетные индексы, используйте нарезку, а не перечисление, а цикл гораздо эффективнее и проще для чтения:
even = sum(data[::2])
odd = sum(data[1::2])
Вы также можете использовать фильтр, но я бы не советовалэто для получения по индексу:
sum(filter(lambda n: data.index(n) % 2 == 0, data))