У меня есть список, как это:Как преобразовать список в словарь?
listedd = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K',]
, и я хочу, чтобы преобразовать его в словарь, как это:
{'AAA':'K', 'AAC': 'N', 'AAG':'K'}
У меня есть список, как это:Как преобразовать список в словарь?
listedd = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K',]
, и я хочу, чтобы преобразовать его в словарь, как это:
{'AAA':'K', 'AAC': 'N', 'AAG':'K'}
Вы можете попробовать что-то вроде этого:
>>> l = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K']
>>>
>>> v = iter(l)
>>> {s: next(v) for s in v}
{'AAG': 'K', 'AAA': 'K', 'AAC': 'N'}
Вот небольшое сравнение времени в Python 3.3.2:
>>> from timeit import timeit
>>> setup = "l = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K']"
>>>
>>> timeit("v = iter(l); {s: next(v) for s in v}", setup)
0.7127587589984614
>>>
>>> timeit("dict(zip(l[::2],l[1::2]))", setup)
1.4540460520001943
>>>
>>> timeit("dict(zip(*[iter(l)]*2))", setup)
1.395266197001547
>>>
>>> timeit("{k: l[i+1] for i,k in enumerate(l) if not i%2}", setup)
1.4753028479990462
Ссылка:
Шаг через поиск по двоек, застежка-молния результаты вместе, давая список кортежей, которые будут ваши пары ключ/значение, а затем преобразовать этот список кортежей в словаре:
>>> dict(zip(l[::2],l[1::2]))
{'AAG': 'K', 'AAA': 'K', 'AAC': 'N'}
Я думаю, что самый короткий путь заключается в использовании ломтиков:
>>> listedd = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K',]
>>> result = dict(zip(listedd[::2], listedd[1::2]))
{'AAA': 'K', 'AAC': 'N', 'AAG': 'K'}
Этот код действительно отображает все четные элементы списка в нечетные элементы.
Обновление: Я пропустил предыдущий пост, извините))
Просто некоторые вкус:
d = { k : listedd[i+1] for i, k in enumerate(listedd) if not i % 2}
Другой способ использования iter
и zip
:
dict(zip(*[iter(listedd)]*2))
Или, если вы предпочитают более длинные программы для более коротких:
>>> listedd = ['AAA', 'K', 'AAC', 'N', 'AAG', 'K',]
>>> it = iter(listedd)
>>> z = zip(it,it)
>>> d = dict(z)
>>> print d
{'AAG': 'K', 'AAA': 'K', 'AAC': 'N'}
... или 'dict ((s, next (v)) для s в v)' для более старых версий. – glglgl