簡體   English   中英

從列表創建字典-按順序

[英]create dictionary from list - in sequence

我想從清單創建字典

>>> list=['a',1,'b',2,'c',3,'d',4]
>>> print list
['a', 1, 'b', 2, 'c', 3, 'd', 4]

我使用dict()從列表中生成字典,但結果未按預期順序排列。

>>> d = dict(list[i:i+2] for i in range(0, len(list),2))
>>> print d
{'a': 1, 'c': 3, 'b': 2, 'd': 4}

我希望結果按順序排列。

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

你們能幫忙指教嗎?

字典沒有任何順序,如果要保留順序,請使用collections.OrderedDict 並且不使用索引,而使用iterator

>>> from collections import OrderedDict
>>> lis = ['a', 1, 'b', 2, 'c', 3, 'd', 4]
>>> it = iter(lis)
>>> OrderedDict((k, next(it)) for k in it)
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

您可以使用石斑魚配方zip(*[iterable]*n)將項目收集為n組:

In [5]: items = ['a',1,'b',2,'c',3,'d',4]

In [6]: items = iter(items)

In [7]: dict(zip(*[items]*2))
Out[7]: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

PS。 永遠不要命名變量list ,因為它會遮蓋相同名稱的內置變量(類型)。

石斑魚食譜很容易使用,但是有點難以解釋

dict中的項目是無序的。 因此,如果要按特定順序排列字典項,請使用collections.OrderedDict (如falsetru所指出的那樣):

In [13]: collections.OrderedDict(zip(*[items]*2))
Out[13]: OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

字典是無序的數據結構。 要保留訂單,請使用collection.OrderedDict

>>> lst = ['a',1,'b',2,'c',3,'d',4]
>>> from collections import OrderedDict
>>> OrderedDict(lst[i:i+2] for i in range(0, len(lst),2))
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM