在Python3.4中,运行代码
d = {}
for i in range(-100, 1): #exclusive endpoint
d[i] = 0
应该给您一个字典,d
,它有100个键/值对,以-100:0
开头,以0:0
结尾。但出于某种原因,每当我运行这段代码时,我都会得到一个以键/值对0:0
和-1:0
开头的字典,然后从-100:0
到-2:0
。
据我所知,我应该得到一本排序正确的字典,但出于某种原因,我没有。
我在这里做错什么了吗?或者Python里面有什么奇怪的东西吗?
P.S:当我试着把字典写成100到100的时候,情况就更奇怪了。
发布于 2015-05-23 22:39:51
在python中字典没有排序。
发布于 2015-05-23 22:39:56
dicts没有顺序,键添加的顺序并不重要。
如果您想要订单,请使用colletions.OrderedDict
来保持插入顺序:
from collections import OrderedDict
od = OrderedDict().fromkeys(range(-100, 1),0) #exclusive endpoint
print(od)
输出:
OrderedDict([(-100, 0), (-99, 0), (-98, 0), (-97, 0), (-96, 0), (-95, 0), (-94, 0), (-93, 0), (-92, 0), (-91, 0), (-90, 0), (-89, 0), (-88, 0), (-87, 0), (-86, 0), (-85, 0), (-84, 0), (-83, 0), (-82, 0), (-81, 0), (-80, 0), (-79, 0), (-78, 0), (-77, 0), (-76, 0), (-75, 0), (-74, 0), (-73, 0), (-72, 0), (-71, 0), (-70, 0), (-69, 0), (-68, 0), (-67, 0), (-66, 0), (-65, 0), (-64, 0), (-63, 0), (-62, 0), (-61, 0), (-60, 0), (-59, 0), (-58, 0), (-57, 0), (-56, 0), (-55, 0), (-54, 0), (-53, 0), (-52, 0), (-51, 0), (-50, 0), (-49, 0), (-48, 0), (-47, 0), (-46, 0), (-45, 0), (-44, 0), (-43, 0), (-42, 0), (-41, 0), (-40, 0), (-39, 0), (-38, 0), (-37, 0), (-36, 0), (-35, 0), (-34, 0), (-33, 0), (-32, 0), (-31, 0), (-30, 0), (-29, 0), (-28, 0), (-27, 0), (-26, 0), (-25, 0), (-24, 0), (-23, 0), (-22, 0), (-21, 0), (-20, 0), (-19, 0), (-18, 0), (-17, 0), (-16, 0), (-15, 0), (-14, 0), (-13, 0), (-12, 0), (-11, 0), (-10, 0), (-9, 0), (-8, 0), (-7, 0), (-6, 0), (-5, 0), (-4, 0), (-3, 0), (-2, 0), (-1, 0), (0, 0)])
您还可以使用dict理解创建dict:
d = {k:0 for k in range(-100, 1)}
发布于 2015-05-23 22:46:24
for i in range(-100, 1)
为您提供了一个从-100到0的数字范围(步骤= 1)。因此,i
从-100开始,每次迭代以1递增(-99,98 )。(等等)直到0。每次向字典中添加一个键,在字典的末尾将包含一个100 无序的键,从-100到0。
在python中,字典总是无序的。如果您想要一本有序字典,我建议您使用collection.OrderedDict
,例如:
import collections
d = collections.OrderedDict()
for i in range(-100, 1):
d[i] = 0
https://stackoverflow.com/questions/30418250
复制相似问题