如何动态地将元组转换为键值对?Python中元组的关键值对
比方说,我有:
tuple = ('name1','value1','name2','value2','name3','value3')
我希望把它变成一本字典:
dictionary = { name1 : value1, name2 : value2, name3 : value3)
如何动态地将元组转换为键值对?Python中元组的关键值对
比方说,我有:
tuple = ('name1','value1','name2','value2','name3','value3')
我希望把它变成一本字典:
dictionary = { name1 : value1, name2 : value2, name3 : value3)
转换的元组键值对,让dict
构造构建一个字典:
it = iter(tuple_)
dictionary = dict(zip(it, it))
zip(it, it)
习语产生来自otherwi的项目对se flat iterable,提供可以传递给dict
构造函数的一系列对。这个概括可以在itertools文档中作为grouper recipe获得。
如果输入足够大,请将zip
替换为itertools.izip
以避免分配临时列表。与基于映射t[i]
到[i + 1]
的表达式不同,上述操作不仅适用于序列,还适用于任何迭代。
+1。爱这个解决方案。出于某种原因,我总是认为'zip()'不会按交替顺序使用它的参数。 –
@JoelCornett'zip'并不在乎,它只是消耗从左到右的迭代。 (从左到右的消费实际上[在文档中保证](http://docs.python.org/2/library/functions.html#zip)正是为了使这个习惯用法工作。) – user4815162342
顺便说一句,分组习语可以是,并且经常被表示为单行:'dict(zip(* [iter(tuple)] * 2))''。单线形式很难理解,所以我没有在这里使用它。 – user4815162342
只是做一个简单的循环。
my_dic = {}
tuple = ('name1','value1','name2','value2','name3','value3')
if len(tuple) % 2 == 1:
my_dic[tuple[-1]] = None
for i in range(0, len(tuple) - 1, 2):
my_dic[tuple[i]] = tuple[i + 1]
print my_dic
tuple = ('name1','value1','name2','value2','name3','value3')
d = {}
for i in range(0, len(tuple), 2):
d[tuple[i]] = tuple[i+1]
print d
dictionary = {tuple[i]: tuple[i + 1] for i in range(0, len(tuple), 2)}
另一种简单的方法:
dictionary = dict(zip(tuple[::2],tuple[1::2]))
+1简化和使用dict解析 – user4815162342
你想发生,如果有奇数个在你的元组的项目是什么?另外,你不想使用'tuple'作为变量名... –