我有一個看起來像這樣的列表(myarray的),清單字典,鍵和值
[u 'item-01', 52, u 'item-02', 22, u 'item-03', 99, u 'item-04', 84]
我試圖將其轉換成與鍵和值的字典。
我試過循環,但不給我預期的結果,
mydict = {}
for k,v in myarray:
mydict[k] = v
我有一個看起來像這樣的列表(myarray的),清單字典,鍵和值
[u 'item-01', 52, u 'item-02', 22, u 'item-03', 99, u 'item-04', 84]
我試圖將其轉換成與鍵和值的字典。
我試過循環,但不給我預期的結果,
mydict = {}
for k,v in myarray:
mydict[k] = v
簡單:使用zip
和擴展切片。
mydict = dict(zip(myarray[::2], myarray[1::2]))
第一擴展切片使所有偶數索引的list
,所有奇數的二,zip
雙他們分成tuple
s,並且dict
構造可以採取配對值的迭代和使用它們作爲初始化鍵/值對。
注意:Padraig的解決方案使用iter
將工作得更快(並處理非序列迭代),雖然它有點不直觀(並且不如書面簡潔)。在成爲甚至不太直觀通過using the behavior of list
multiplication copying references爲代價的過程中,它可以是一個襯裏(見注2上順序操作的表;的另一種用途的例子爲它在itertools
grouper
recipe找到):
mydict = dict(zip(*[iter(myarray)]*2))
l = [u'item-01', 52, u'item-02', 22, u'item-03', 99, u'item-04', 84]
it = iter(l)
print(dict(zip(it, it)))
{u'item-04': 84, u'item-01': 52, u'item-03': 99, u'item-02': 22}
zip(it, it)
創建對每兩個元素相結合,號召結果字典使用每個元組爲重點,第二個作爲高原的第一要素。
In [16]: it = iter(l)
In [17]: l = list(zip(it,it))
In [18]: l
Out[18]: [('item-01', 52), ('item-02', 22), ('item-03', 99), ('item-04', 84)]
In [19]: dict(l)
Out[19]: {'item-01': 52, 'item-02': 22, 'item-03': 99, 'item-04': 84}
使用for循環像自己的代碼:
it = iter(l)
d = {}
for k, v in it:
d[k] = v
「鍵叫名」和「價值被叫號碼」的聲音腥。字典沒有任何關於它的鍵和值被調用的表示。 – user2357112
可能的重複[你如何將一個列表分割成Python中均勻大小的塊?](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-塊狀物的蟒) – GingerPlusPlus