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