Как получить значение индекса для понимания списка?

Используя следующий подход, я могу создать словарь значений:

{ p.id : {'total': p.total} for p in p_list} 

Это приводит к {34:{'total':334}, 53:{'total: 123} ... }

Я также хотел бы перечислить индекс из списка, чтобы я знал, в какой позиции находится p.id Я сделал такой список:

  c_list = [x for x in range(len(p_list))] 

И затем попытался увидеть, как c также может быть указан как часть результата. Я думал, что мне нужно что-то вроде этого:

 { (p,c) for p in p_list for c in c_list} 

но когда я попытался реализовать его, я не смог получить значение c в словаре:

 { (p.id, c : {'total': p.total, 'position': c}) for p in p_list for c in c_list} 

    Используйте enumerate чтобы получить индекс, а также элемент из iterable:

     { (p.id, ind) : {'id': p.id, 'position': ind} for ind, p in enumerate(p_list)} 

    Обновить:

     { p.id : {'id': p.id, 'position': ind} for ind, p in enumerate(p_list)} 

    Справка по enumerate :

     >>> print enumerate.__doc__ enumerate(iterable[, start]) -> iterator for index, value of iterable Return an enumerate object. iterable must be another object that supports iteration. The enumerate object yields pairs containing a count (from start, which defaults to zero) and a value yielded by the iterable argument. enumerate is useful for obtaining an indexed list: (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 

    Попробуйте использовать enumerate . Это функция-генератор, которая возвращает кортежи формы: (i, iterable [i]).

     { p.id : {'id': p.id, 'position': i} for i, p in enumerate(p_list)}