如何动态地将元组转换为键值对?
我们说我有:
tuple = ('name1','value1','name2','value2','name3','value3')
我想将它放入字典中:
dictionary = { name1 : value1, name2 : value2, name3 : value3 )
答案 0 :(得分:13)
将元组转换为键值对,让dict
构造函数构建一个字典:
it = iter(tuple_)
dictionary = dict(zip(it, it))
zip(it, it)
成语从其他平面迭代中生成项对,提供可以传递给dict
构造函数的一对对。可以通过itertools文档中的grouper recipe获得对此的概括。
如果输入足够大,请将zip
替换为itertools.izip
以避免分配临时列表。与基于映射t[i]
到[i + 1]
的表达式不同,上述内容将适用于任何可迭代的,而不仅仅是序列。
答案 1 :(得分:3)
dictionary = {tuple[i]: tuple[i + 1] for i in range(0, len(tuple), 2)}
另一种简单的方法:
dictionary = dict(zip(tuple[::2],tuple[1::2]))
答案 2 :(得分: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
答案 3 :(得分:2)
tuple = ('name1','value1','name2','value2','name3','value3')
d = {}
for i in range(0, len(tuple), 2):
d[tuple[i]] = tuple[i+1]
print d