当我尝试定义字典时,我想要的是:
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开始,那么我就会遇到大麻烦。
问题是什么?
答案 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