如何按字母顺序对字典进行排序?

时间:2017-03-21 21:01:29

标签: python sorting dictionary alpha

def wordCount(inPath):
    inFile = open(inPath, 'r')
    lineList = inFile.readlines()
    counter = {}
    for line in range(len(lineList)):
        currentLine = lineList[line].rstrip("\n")
        for letter in range(len(currentLine)):
            if currentLine[letter] in counter:
                counter[currentLine[letter]] += 1
            else:
                counter[currentLine[letter]] = 1

    sorted(counter.keys(), key=lambda counter: counter[0])
    for letter in counter:
        print('{:3}{}'.format(letter, counter[letter]))

inPath = "file.txt"
wordCount(inPath)

这是输出:

a  1
k  1
u  1
l  2
   12
h  5
T  1
r  4
c  2
d  1
s  5
i  6
o  3
f  2
H  1
A  1
e  10
n  5
x  1
t  5

这是我想要的输出:

  12
A 1
H 1
T 1
a 1
c 2
d 1
e 10
f 2
h 5
i 6
k 1
l 2
n 5
o 3
r 4
s 5
t 5
u 1
x 1

如何排序"计数器"按字母顺序排列? 我尝试过简单地按键和值进行排序,但它并没有按字母顺序返回,首先是大写字母 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

sorted(counter.keys(), key=lambda counter: counter[0])

单独没有做任何事情:它会返回一个根本没有使用过的结果(除非你使用_回忆起它,而不是命令行练习)

list .sort()方法相比,您无法对字典键进行排序"就地"。但你可以做的是迭代键的排序版本:

for letter in sorted(counter.keys()):

, key=lambda counter: counter[0]在这里没用:你的钥匙上只有字母。

除此之外:使用collections.Counter计算字母可以简化您的整个代码。

import collections

c = collections.Counter("This is a Sentence")
for k,v in sorted(c.items()):
    print("{} {}".format(k,v))

结果(包括空格字符):

  3
S 1
T 1
a 1
c 1
e 3
h 1
i 2
n 2
s 2
t 1