텍스트파일에서 가장 빈도수가 많은 단어 출력

name = input('Enter file:')
handle = open(name)

di = dict()
for line in handle:
    words = line.split()
    for word in words:
        di[word] = di.get(word,0) + 1

largest = -1
theword = None
for name, count in di.items() :
    if count > largest : 
        largest = count
        theword = name
        
print('Done', theword, largest)

 

딕셔너리 정렬

- 먼저, 튜플의 특성: 불변 속성, 여러 값끼리 한 번에 비교 가능, 딕셔너리 .item() 메소드는 (키,값) 쌍인 튜플의 리스트를 반환

(0, 1, 2) < (5, 1, 2)
# True
(0, 1, 2000000) < (0, 3, 4)
# True
( 'Jones', 'Sally' ) < ('Jones', 'Sam')
# True
( 'Jones', 'Sally') > ('Adams', 'Sam')
# True

- 키를 기준으로 정렬

d = {'b':1, 'a':10, 'c':22}
d.items()
# dict_items([('b', 1), ('a', 10), ('c', 22)])
sorted(d.items())
# [('a', 10), ('b', 1), ('c', 22)]

# OR

for k, v in sorted(d.items()):
    print(k, v)
# a 10
# b 1
# c 22

- 값을 기준으로 정렬

c = {'a':10, 'b':1, 'c':22}
tmp = list()
for k, v in c.items() :
    tmp.append( (v, k) )

print(tmp)	# [(10, 'a'), (1, 'b'), (22, 'c')]
tmp = sorted(tmp)
print(tmp)	# [(1, 'b'), (10, 'a'), (22, 'c')]


# 내림차순을 원할 경우
# tmp = sorted(tmp, reverse=True)

- 리스트 컴프리헨션 (List Comprehension)

c = {'a':10, 'b':1, 'c':22}
print( sorted( [ (v,k) for k,v in c.items() ] ) )
# [(1, 'b'), (10, 'a'), (22, 'c')]

 

가장 많이 등장한 단어 Top 10 출력

fhand = open('test.txt')
counts = {}	# "단어:빈도수" 인 딕셔너리
for line in fhand:
    words = line.split()
    for word in words:
        counts[word] = counts.get(word, 0 ) + 1

for val, key in sorted([ (v, k) in counts.items() ], reverse=True):
    print(key, val)

 

 

+ Recent posts