目前,我正在尝试从文本文件中读取“快速棕色狐狸跳过懒惰的棕色狗背上”这样的词语,并按字长和字数组织。
所以输出应该是:
1 The
1 fox
1 the
1 back
1 lazy
1 over
2 brown
1 dog’s
1 quick
1 jumped
我确实检查过很多像#{3}}这样的stackoverflow问题,我猜我错过了,或者我不明白如何使用它。我是python的初学者。
这是我到目前为止所做的:
from collections import Counter
file = open("text.txt","r")
#read the file & split words
wordcount =Counter(file.read().split())
#printing word count
for item in wordcount.items():
print ("{}\t{}".format(*item))
有人能帮我知道我做错了什么吗?
答案 0 :(得分:1)
尝试类似 -
from collections import Counter
import re
#Identify each word using regex
words = re.findall(r'\w+', open(r"D:\test.txt").read())
#Find counts
data= Counter(words).most_common()
data = sorted(data,key=lambda x:x[0])
print data
打印 -
[('The', 1), ('back', 1), ('brown', 2), ('dog', 1), ('fox', 1), ('jumped', 1), ('lazy', 1), ('over', 1), ('quick', 1), ('s', 1), ('the', 1)]
或者尝试分裂 -
from collections import Counter
import re
words=open(r"D:\test.txt").read().split(" ")
data= Counter(words).most_common()
data = sorted(data,key=lambda x:x[1])
print data
打印 -
[('lazy', 1), ('jumped', 1), ('over', 1), ('fox', 1), ('back', 1), ('quick', 1), ('The', 1), ('the', 1), ('dog's', 1), ('brown', 2)]
答案 1 :(得分:1)
正如我的评论所说,你不能sort
dict因为dicts没有被排序(它与键/值对如何被散列以允许O(1)
值获得有关)。
您可以改为遍历已排序的dict.items()
,因为.items()
会返回一个元组列表,并且列表是有序的。
>>> s = "The quick brown fox jumped over the lazy brown dog’s back"
>>> from collections import Counter
>>> wordcount = Counter(s.split())
>>> wordcount
Counter({'brown': 2, 'back': 1, 'quick': 1, 'The': 1, 'over': 1, 'dog’s': 1, 'jumped': 1, 'fox': 1, 'the': 1, 'lazy': 1})
>>> for key,val in sorted(wordcount.items(),key = lambda pair: len(pair[0])):
print(str(val),key)
1 The
1 fox
1 the
1 back
1 over
1 lazy
1 quick
2 brown
1 dog’s
1 jumped
使用内置sorted(list,key=somefunction)
函数,您可以按键wordcount.items()
返回的列表排序(自pair[0]
后pair == (key,value)
访问) / p>
答案 2 :(得分:1)
首先,必须将字典转换为元组列表,然后对其进行排序并打印/返回:
https://pbs.twimg.com/profile_images/378812345851234567/Ay2SHEYz_normal.png
答案 3 :(得分:0)
[编辑]我重读了这篇文章并发现这并不是你想要的。见其他人的答案。
字典类似于列表,但是使用字符串而不是整数作为凹凸。如果您想要存储键值结构的数据,例如" Mom":39," Kevin":12," Sally":14,它们非常有用。 Dictionarys不可排序。
根据您的需要,可以使用简单的字符串列表。 (您只需在列表中调用sort()即可对其进行排序:
words = file.read().split() #that is a list
words.sort()