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