提问人:blahblahblah 提问时间:8/30/2023 更新时间:8/30/2023 访问量:39
按词频排序列表:排序时不输出频率
Sorting a list on frequency of words: frequency not outputted when sorted
问:
我正在尝试编写一个程序,该程序将输出以字母表的每个字母开头的单词的出现。到目前为止,我已经让代码工作并输出正确的数字。但是,问题在于,当尝试按字母顺序对频率进行排序时,频率也不会输出。我对 python 相当陌生,我不确定如何解决这个问题。
我的代码如下所示:
f = open('textfile.txt','r')
data=f.read()
words= data.split()
#Alphabet occurence
alpha ={}
for alphaword in words:
key = alphaword[0].upper()
if key in alpha:
alpha[key] +=1
else:
alpha[key] = 1
sortedalpha=sorted(alpha)
print("The occurence of words beginning with each letter is: ")
print(alpha)
print("")
print(sortedalpha)
这是不进行排序的输出 (alpha)
{'T': 14, 'S': 4, 'W': 4, 'F': 1, 'R': 2, 'O': 7, 'A': 2, 'L': 2, 'G': 1, 'C': 1, 'D': 2, 'H': 1, 'M': 1, 'P': 2}
这是我尝试对其进行排序时的输出(sortedalpha)
['A', 'C', 'D', 'F', 'G', 'H', 'L', 'M', 'O', 'P', 'R', 'S', 'T', 'W']
然而,我想要的是这个
['A': 2, 'C': 1, 'D': 2,'F': 1,'G': 1, 'H': 1, 'L': 2, 'M': 1, 'O': 7, 'P': 2, 'R': 2, 'S': 4, 'T': 14, 'W': 4]
答:
1赞
Epic-legend128
8/30/2023
#1
因此,当您在字典上调用 sort() 时,python 只会对字典的键进行排序,就像它在代码中发生的情况一样。如果你想根据键对整个字典进行排序,但同时保留它们各自的值,那么你需要用Michael Butcher在你的评论中提到的方式来替换。这是有效的,因为 .items() 返回整个字典的只读可迭代对象,它允许您访问键和值。因此,您的代码应如下所示:sortedalpha = sorted(alpha)
sortedalpha = dict(sorted(alpha.items()))
f = open('textfile.txt','r')
data=f.read()
words= data.split()
#Alphabet occurence
alpha ={}
for alphaword in words:
key = alphaword[0].upper()
if key in alpha:
alpha[key] +=1
else:
alpha[key] = 1
sortedalpha=dict(sorted(alpha.items())) # here is the change
print("The occurence of words beginning with each letter is: ")
print(alpha)
print("")
print(sortedalpha)
如果你想访问一个字典的所有值的列表,而没有它们各自的键,那么你可以使用 .values(),对于键,你可以使用 .keys()。
评论
0赞
blahblahblah
8/30/2023
谢谢!这更有意义。我很欣赏你的解释!
评论
sortedalpha=dict(sorted(alpha.items()))