如何动态地将元组转换为键值对?
假设我有:
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)
产生成对的项目,提供可以传递给dict
构造函数的成对序列。itertools 文档中的 grouper recipe对此进行了概括。
如果输入足够大,请替换zip
为itertools.izip
以避免分配临时列表。与基于映射t[i]
到[i + 1]
的表达式不同,以上将适用于任何可迭代对象,而不仅仅是序列。
dictionary = {tuple[i]: tuple[i + 1] for i in range(0, len(tuple), 2)}
另一种简单的方法:
dictionary = dict(zip(tuple[::2],tuple[1::2]))
只需做一个简单的循环。
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