Один лайнер: создание словаря из списка с индексами в виде ключей

Я хочу создать словарь из данного списка только в одной строке. Ключами словаря будут индексы, а значениями будут элементы списка. Что-то вроде этого:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)

Вывод:

{0:51, 1:27, 2:13, 3:56}

У меня нет конкретных требований относительно того, почему я хочу одну строку. Я просто изучаю python и задаюсь вопросом, возможно ли это.

Ответ 1

a = [51,27,13,56]
b = dict(enumerate(a))
print(b)

создаст

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

Возвращает объект перечисления. последовательность должна быть последовательностью, итератором или другим объектом, который поддерживает итерацию. Метод next() итератора, возвращаемый enumerate(), возвращает a tuple, содержащий счетчик (от начала, который по умолчанию равен 0), и значения, полученные от итерации по последовательности:

Ответ 2

С другим конструктором у вас есть

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)

Ответ 3

Попробуйте enumerate: он вернет список (или итератор) кортежей (i, a[i]), из которого вы можете построить dict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b

Ответ 4

{x:a[x] for x in range(len(a))}

Ответ 5

Просто используйте понимание списка.

a = [51,27,13,56]  
b = dict( [ ((i,a[i]) for i in range(len(a)) ] )
print b