2011-03-09 74 views
3

我正在學習python。我有一個簡單條目的列表,我想將它轉換成一個字典,其中列表的第一個元素是第二個元素的關鍵字,第三個是第四個元素的關鍵字,依此類推。我該怎麼做?將簡單列表轉換爲字典(在Python中)

list = ['first_key', 'first_value', 'second_key', 'second_value'] 

在此先感謝!

+0

請從來沒有任何名稱列表(或'str'或'dict')。它用相同的名稱覆蓋內建。 – ThiefMaster 2011-03-09 17:08:07

回答

2
myDict = dict(zip(myList[::2], myList[1::2])) 

請不要使用「列表」作爲變量名,因爲它可以防止您訪問列表()函數。

如果有大量的數據參與,我們可以更有效地做到這一點使用迭代器功能:

from itertools import izip, islice 
myList = ['first_key', 'first_value', 'second_key', 'second_value'] 
myDict = dict(izip(islice(myList,0,None,2), islice(myList,1,None,2))) 
4

最簡潔的方式是

some_list = ['first_key', 'first_value', 'second_key', 'second_value'] 
d = dict(zip(*[iter(some_list)] * 2)) 
1

如果該列表是大的,你最終通過建立片或急於拉鍊浪費內存。一種更懶惰地轉換列表的方法是(ab)使用列表迭代器和izip

from itertools import izip 

lst = ['first_key', 'first_value', 'second_key', 'second_value'] 
i = iter(lst) 
d = dict(izip(i,i)) 
0

吻方式:

使用異常和迭代

myDict = {} 

    it = iter(list) 

    for x in list: 
     try: 
      myDict[it.next()] = it.next() 
     except: 
      pass 



    myDict