字典不是停留在python的顺序

Cos*_*Cos 5 python python-2.7 python-3.x

我创建了一个字母表字典,其值从0开始,并根据单词文件增加一定量.我对初始字典进行了硬编码,我希望它按字母顺序排列,但它根本不存在.我希望它按字母顺序返回dictionart,基本上和初始字典保持一致.我怎么能保持秩序?

from wordData import*

def letterFreq(words):

    totalLetters = 0
    letterDict = {'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,'j':0,'k':0,'l':0,'m':0,'n':0,'o':0,'p':0,'q':0,
                  'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0,'y':0,'z':0}

    for word in words:
        totalLetters += totalOccurences(word,words)*len(word)
        for char in range(0,len(word)):
            for letter in letterDict:
                if letter == word[char]:
                    for year in words[word]:
                        letterDict[letter] += year.count
    for letters in letterDict:
        letterDict[letters] = float(letterDict[letters] / totalLetters)
    print(letterDict)
    return letterDict

def main():

    filename = input("Enter filename: ")
    words = readWordFile(filename)
    letterFreq(words)


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

101*_*101 9

字典不是订购的,不会为您保留任何订单.

您可以使用有序字典:

from collections import OrderedDict
letterDict = OrderedDict([('a', 0), ('b', 0), ('c', 0)])
Run Code Online (Sandbox Code Playgroud)

或者你可以只返回你的字典内容的排序列表

letterDict = {'a':0,'b':0,'c':0}
sortedList = sorted([(k, v) for k, v in letterDict.iteritems()])

print sortedList # [('a', 0), ('b', 0), ('c', 0)]
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是:`OrderedDict`不是*sorted*字典.它的顺序是插入顺序,iirc. (4认同)