-
Notifications
You must be signed in to change notification settings - Fork 0
/
lexical_frequency_dictionary.py
85 lines (61 loc) · 2.68 KB
/
lexical_frequency_dictionary.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/python3
import unittest
# --------------------------------------------------------------e133
# REVIEW: condition, loop, approximation, string, list, DICT,
# recursion, 2D, exception, class
# --------------------------------------------------------------
def q6(sentence) :
'''
Assumes sentence is a string.
Returns a list of the most frequent words in the sentence,
where words are obtained by sentence.split(),
and each word is trimmed by removing trailing punctuation marks,
where punctuation marks are any of the following letters: ';:.,!?'.
Requirement: you must use a DICTIONARY to count frequency.
For example,
q6('Hey diddle diddle the cat and the fiddle, the cow jumped over the moon')
should return ['the'] since 'the' is the most frequent word.
q6('red; blue!! blue red']
should return ['red', 'blue'], where the items are in any order.
'''
sentenceList= sentence.split()
print(sentenceList) #################################################
for i in range(len(sentenceList)):
sentenceList[i]= sentenceList[i].rstrip(";:.,!?")
emptyList= [0 for i in range(len(sentenceList))]
joinList= zip(sentenceList, emptyList)
print(joinList)#############################################################
wordDictionary= dict(joinList)
print(wordDictionary) ###################################################################
for i, x in wordDictionary.items():
for n in sentenceList:
if n==i:
wordDictionary[i]+=1
print(wordDictionary) #######################################################################
finalList= [i for i in wordDictionary.keys() if wordDictionary[i]== max(wordDictionary.values())]
print(finalList)
uniqueFinalList= []
for i in finalList:
if i not in uniqueFinalList:
uniqueFinalList.append(i)
# --------------------------------------------------------------
# TEST CASES
# --------------------------------------------------------------
class myTests(unittest.TestCase):
def test1(self):
s = 'Hey diddle diddle the cat and the fiddle, the cow jumped over the moon'
r = ['the']
self.assertEqual(sorted(q6(s)), r)
def test2(self):
s = 'red, blue;, red! blue!!'
r = ['blue', 'red']
self.assertEqual(sorted(q6(s)), r)
def test3(self):
s = 'Red, blUe;, red! blue!!'
r = ['Red', 'blUe', 'blue', 'red']
self.assertEqual(sorted(q6(s)), r)
if __name__=='__main__':
unittest.main(exit=True)
# --------------------------------------------------------------
# The End
# --------------------------------------------------------------