在Python中將列表轉(zhuǎn)換為字典假設(shè)我a在Python中有一個列表,其條目可以方便地映射到字典。每個偶數(shù)元素代表字典的鍵,以下奇數(shù)元素是值例如,a = ['hello','world','1','2']我想把它轉(zhuǎn)換成字典b,在那里b['hello'] = 'world'b['1'] = '2'什么是語法上最干凈的方法來實現(xiàn)這一目標?
3 回答

大話西游666
TA貢獻1817條經(jīng)驗 獲得超14個贊
b = dict(zip(a[::2], a[1::2]))
如果a
很大,你可能想要做類似下面的事情,它不會像上面那樣制作任何臨時列表。
from itertools import izip i = iter(a)b = dict(izip(i, i))
在Python 3中你也可以使用dict理解,但具有諷刺意味的是,我認為最簡單的方法是使用range()
和len()
,這通常是代碼氣味。
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
因此,該iter()/izip()
方法仍然可能是Python 3中最Pythonic 的方法,盡管EOL在評論中指出,zip()
在Python 3中已經(jīng)很懶,所以你不需要izip()
。
i = iter(a)b = dict(zip(i, i))
如果你想要它在一行,你將不得不作弊并使用分號。;-)

守著一只汪
TA貢獻1872條經(jīng)驗 獲得超4個贊
您可以非常輕松地使用dict理解:
a = ['hello','world','1','2']my_dict = {item : a[index+1] for index, item in enumerate(a) if index % 2 == 0}
這相當于下面的for循環(huán):
my_dict = {}for index, item in enumerate(a): if index % 2 == 0: my_dict[item] = a[index+1]
添加回答
舉報
0/150
提交
取消