[英]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.