如何使用范围?

时间:2015-01-29 13:38:19

标签: python string range

当我尝试定义字典时,我想要的是: Today['Today_1' : 5.0, 'Today_2': 5.0, 'Today_3' : 5.0, ... 'Today_24' : 5.0]。 所以我写道:

Today = {}
for i in range(1,25,1):
    Today['Today_%s'%(i)]= 5.0 
print Today

当我看到输出时,我很惊讶。它是:

('Today_20': 5.0, 'Today_21' : 5.0,......'Today_16' : 5.0)

它不是从1开始的。它是随机的。

这对我来说是个大问题。因为我总是这样做,我有50个文件,它们是atom_1.dat, atom_2.dat, atom_3.dat, ..., atom_50.dat。我用

for i in range(1,51,1):
   readfile('atom_%s.dat',%(i))

如果它不是从1开始,那么我就会遇到大麻烦。

问题是什么?

3 个答案:

答案 0 :(得分:4)

使用OrderedDict可以解决所有后顾之忧......

import collections
Today = collections.OrderedDict()
for i in range(1,25,1):
    Today['Today_%s'%(i)]= 5.0 
print Today

答案 1 :(得分:3)

python中的字典本质上是无序对象。如果您想要一个记住插入对象的顺序的字典,请查看collections.OrderedDict

要使用此功能,您需要替换

Today = {}

import collections
Today = collections.OrderedDict()

答案 2 :(得分:0)

当你调用print今天,它实际上调用了dict。 str ()方法,这个输出是无序的并不意味着你的插入不是有序的,你可以像这样工作: / p>

class Today(dict):
    def __str__(self):
        retval = []
        for eachKey in sorted(self.keys()):
            retval.append("'" + eachKey + "'" + ":" + str(self[eachKey]))
        return ",".join(retval)


today = Today()
for i in range(1, 25, 1):
    today['Today_%s' % i] = 5.0
print today