首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python的range()函数

使用Python的range()函数
EN

Stack Overflow用户
提问于 2015-05-23 22:37:51
回答 3查看 469关注 0票数 0

在Python3.4中,运行代码

代码语言:javascript
运行
复制
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的时候,情况就更奇怪了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-23 22:39:51

在python中字典没有排序。

票数 4
EN

Stack Overflow用户

发布于 2015-05-23 22:39:56

dicts没有顺序,键添加的顺序并不重要。

如果您想要订单,请使用colletions.OrderedDict来保持插入顺序:

代码语言:javascript
运行
复制
from collections import OrderedDict
od = OrderedDict().fromkeys(range(-100, 1),0) #exclusive endpoint
print(od)

输出:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
d = {k:0 for k in range(-100, 1)}
票数 4
EN

Stack Overflow用户

发布于 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,例如:

代码语言:javascript
运行
复制
import collections

d = collections.OrderedDict()
for i in range(-100, 1):
    d[i] = 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30418250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档