Python: как построить диктат из простого списка ключей и значений - PullRequest
14 голосов
/ 28 февраля 2012

У меня есть список значений, таких как:

["a", 1, "b", 2, "c", 3]

и я бы хотел из него построить такой диктат:

{"a": 1, "b": 2, "c": 3}

Какой естественный способ сделать это в Python?

Ответы [ 5 ]

39 голосов
/ 28 февраля 2012
>>> x = ["a", 1, "b", 2, "c", 3]
>>> i = iter(x)
>>> dict(zip(i, i))
{'a': 1, 'c': 3, 'b': 2}
13 голосов
/ 28 февраля 2012

Это выглядит довольно лаконично, но я бы не назвал это очень естественным:

>>> l = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(l[::2], l[1::2]))
{'a': 1, 'c': 3, 'b': 2}
3 голосов
/ 28 февраля 2012

Вы можете zip списки альтернативных элементов, например,

>>> lst = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(lst[::2], lst[1::2])
{'a': 1, 'c': 3, 'b': 2}
1 голос
/ 28 февраля 2012

Другой способ:

>>> l = ["a", 1, "b", 2, "c", 3]
>>> dict([l[i:i+2] for i in range(0,len(l),2)])
{'a': 1, 'c': 3, 'b': 2}
0 голосов
/ 28 февраля 2012

На самом деле я не вижу много ситуаций, когда вы столкнетесь с этой конкретной проблемой, поэтому нет «естественного» решения. Один быстрый лайнер, который должен помочь вам, однако:

   {input_list[2*i]:input_list[2*i+1] for i in range(len(input_list)//2)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...