如何動態地將元組轉換爲鍵值對?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'作爲變量名... –