how can you sort by word count? sorted() sort me only by the number of numbers? Thank you for your help
def make_dict(s):
w_dict = {}
word_list = s.split()
for wrd in word_list:
w_dict[wrd] = w_dict.get(wrd,0) 1
return w_dict
print(make_dict("test is test"))
input is print(make_dict("test is test tests tests tests"))
output is {'test': 2, 'is': 1, 'tests': 3}
im search output tests ,test ,is
CodePudding user response:
You can change your code like approach_1 or use collections.Counter
like approach_2.
- You can
sorted
ondict.items()
and return result asdict
- Use
Counter
and returnmost_common
.
Approach_1
def make_dict(s):
w_dict = {}
word_list = s.split()
for wrd in word_list:
w_dict[wrd] = w_dict.get(wrd,0) 1
return dict(sorted(w_dict.items(), key=lambda x: x[1], reverse=True))
print(make_dict("test is test tests tests tests"))
# {'tests': 3, 'test': 2, 'is': 1}
Approach_2
from collections import Counter
def make_dict_2(s):
word_list = s.split()
c = Counter(word_list)
return dict(c.most_common())
print(make_dict_2("test is test tests tests tests"))
#{'tests': 3, 'test': 2, 'is': 1}