Ответ 1
>>> x = ["a", 1, "b", 2, "c", 3]
>>> i = iter(x)
>>> dict(zip(i, i))
{'a': 1, 'c': 3, 'b': 2}
У меня есть список таких значений, как:
["a", 1, "b", 2, "c", 3]
и я хотел бы построить из него такой dict:
{"a": 1, "b": 2, "c": 3}
Каков естественный способ сделать это в Python?
>>> x = ["a", 1, "b", 2, "c", 3]
>>> i = iter(x)
>>> dict(zip(i, i))
{'a': 1, 'c': 3, 'b': 2}
Это кажется довольно сукцином, но я бы не назвал его очень естественным:
>>> l = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(l[::2], l[1::2]))
{'a': 1, 'c': 3, 'b': 2}
Вы можете zip
списки альтернативных элементов, например,
>>> lst = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(lst[::2], lst[1::2])
{'a': 1, 'c': 3, 'b': 2}
Другой способ:
>>> 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}
Я не вижу много ситуаций, когда вы столкнулись с этой точной проблемой, поэтому нет "естественного" решения. Быстрый быстрый лайнер, который должен сделать трюк для вас, будет:
{input_list[2*i]:input_list[2*i+1] for i in range(len(input_list)//2)}