我有一个值列表,如:
["a", 1, "b", 2, "c", 3]
我想从中建立这样一个词:
{"a": 1, "b": 2, "c": 3}
在Python中使用它的自然方法是什么?
答案 0 :(得分:39)
>>> x = ["a", 1, "b", 2, "c", 3]
>>> i = iter(x)
>>> dict(zip(i, i))
{'a': 1, 'c': 3, 'b': 2}
答案 1 :(得分:13)
这似乎相当简洁,但我不会称之为非常自然:
>>> l = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(l[::2], l[1::2]))
{'a': 1, 'c': 3, 'b': 2}
答案 2 :(得分:3)
您可以zip
替代元素列表,如此
>>> lst = ["a", 1, "b", 2, "c", 3]
>>> dict(zip(lst[::2], lst[1::2])
{'a': 1, 'c': 3, 'b': 2}
答案 3 :(得分:1)
另一种方式:
>>> 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}
答案 4 :(得分:0)
我真的没有看到很多情况会遇到这个问题,因此没有“自然”解决方案。然而,一个应该为你做的技巧的快速衬里将是:
{input_list[2*i]:input_list[2*i+1] for i in range(len(input_list)//2)}