Python Data Structures [Chapter 9]
2021. 2. 23. 18:52ㆍ언어영역/Python
txt파일을 바탕으로 Histogram 만들기
#카운트 사전을 만듭니다
counts = dict()
#글자를 라인에 집어넣습니다.(string 파일)
print('Enter a line of text:')
line = input('')
#str -> lst
words = line.split()
print('Words:', words)
print('Counting...')
#For Loop를 통해서 words파일 안의 원소들을 count합니다.
for word in words:
for word in words:
count[word] = counts.get(word,0) + 1
#참고로, .get(x,y)에서 x는 들어갈 단어, y는 dictionary의 default value를 의미합니다.
#즉, 읽어들이는 과정에서 단어에 해당하는 value가 dictionary에 존재하지 않는다면 value는 1로 설정되고,
#존재한다면 1을 더하는 과정을 모든 원소에서 반복하는 것입니다.
print('Counts', counts)
여기서 집중해서 볼 건 For Loop, 그리고 위의 input 함수다. input('')를 통해서 위에 print된 글자를 집어넣을 수 있다는 걸 알 수 있다.
Loop에서 Dictionary를 이용하는 방법
counts = { 'chuck' : 1, 'fred' : 42, 'jan' : 100 }
for key in counts:
print(key, counts[key])
dictionary에서 in앞에오는 저 친구는 항상 value가 아니라 key이며, value를 가지고 장난 치고 싶다면 그냥 str을 쓰는게 아니라 counts[key]를 적어줘야 한다. 그러면 이제 value를 읽게 된다.
Dictionary to Lists
jjj = { 'chuck' : 1, 'fred' : 42, 'jan' : 100 }
#다음 두 개의 명령어는 같다.
print(list(jjj))
print(jjj.keys())
#Key가 아니라 Value를 반환하고 싶다면,
print(jjj.values())
#Tuple : (key, value)형태의 list목록을 얻고 싶다면
print(jjj.items())
Tuple은 다음 챕터에서 더 자세하게 다룬다고 한다. 일단은 그냥 (k,v)로 알고만 있자.
Loop에서 Key와 Value를 모두 활용하는 방법
for aaa,bbb in jjj.items():
print(aaa, bbb)
파일을 읽을 때 aaa, bbb의 형태로 iteration variable을 설정하게 된다면 자동적으로 key, value순으로 변수가 저장된다. (보통은 k,v를 쓰나 꼭 그것만 써야되는 건 아니라는 걸 말하기 위해 non-mnemonic words를 사용한다.)
Assignment 9.4
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
counts = dict()
lst = list()
bk = None
bc = None
for lines in handle:
if not lines.startswith('From '): continue
words = lines.split()
lst.append(words[1])
for word in lst:
counts[word] = counts.get(word,0) + 1
for k,c in counts.items():
if bc is None or c > bc:
bk = k
bc = c
print(bk, bc)
'언어영역 > Python' 카테고리의 다른 글
Data on Web with XML(and schema) [Chapter 13] (0) | 2021.02.26 |
---|---|
URLlib [Chapter 12] (0) | 2021.02.25 |
Networked Technology [Chapter 11] (0) | 2021.02.24 |
Tuples [Chapter 10] (0) | 2021.02.24 |
Python For Everybody (0) | 2021.02.23 |