본문 바로가기

PYTHON 공부 - PY4E

PY4E: Chapter 9 Dictionaries

Chapter 9, Part 1


1. 프로그래머들이 파이썬에서 가장 좋아하는 부분이 바로 콜렉션(Collection)이다.
2. 딕셔너리는 인메모리 데이터베이스(in memory database)와 같다.
3. 콜랙션은 여러개의 정보를 저장하는 것이다.
4. 리스트는 컬렉션의 일종이며 순서가 있다. 리스트이 구조는 감자칩이나 프링글스와 비슷하다. 
5. 딕셔너리 안에는 순서가 없다. 하지만 를 기반으로 꺼낼 수 있다. 키-벨류 형식이다.

 

6. 딕셔너리는 지갑과 같다. 던져 놓은 모든 것에 레이블이 있다.
7. 딕셔너리는 연관 배열(Associative Arrays)이다 . 즉 키가 의미하는 것은 키와 값은 연결 관계이다.
7. 반면 리스트에는 위치가 있으며, 그 관계가 비교적 덜 강력하고, 덜 유연하다.
8. 공통점은 여러 개의 값을 넣는 것이며. 차이점은 인덱싱하는 방법이다. 

9. 내가 넣은 순서 데로 인덱싱이 할당 되는 것이 리스트이다.
10. 둘 다 새로운 원소 추가 가능, 원소 삭제 가능하다

  
11. 딕셔너리의 키는 문자열다른 타입도 사용 가능
12. 리스트는 대괄호[]로 시작하며, 딕셔너리는 중괄호{}로 시작한다.

13. 딕셔너리는{키, 콜론, 값}이 차례대로 들어간다.
14. dict()로 만든 {}로 만드나 빈 딕셔너리를 만드는 것은 같다.

Chapter 9, Part 2

 

1. 딕셔너리의 가장 일반적인 활용법이 히스토그램이다. 

 

구글이미지, 히스토그


2. 히스토 그램은 쉽게 말해, 대상이 나타나는 횟수를 세서 보여주는 것이다.
3. 'In' operater를 쓰면서 Traceback을 피할 수 있다. 있음을 가정하는 것과, 유무를 묻는 질문은 큰 차이가 있다
4. 키가 딕셔너리에 있는 것을 확인하고 행동하는 것은 일반적이다.

@COCOMOCODING BLOG

 

 


Chpater 9, Part 3

.
1. 문장에서 단어가 얼마나 나왔는지 카운팅
2. 딕셔너리는 가장 강력한 콜랙션 중 하나이며
3. 하나 이상의 아이템을 다룰 수 있게 하는 것이 컬렉션의 기능이다.

 

fname = input('Enter File: ')
if len(fname)< 1: fname ='clown.txt' # 글자길이가 0일 때, 기본 텍스트를 열게 한다.
hand = open(fname) #hand 변수를 통해 fname의 파일을 다루며

di = dict() # di를 딕셔너리 형식으로 지정
for lin in hand: # hand에 있는 라인에 대한 반복문을 시행한다.
        lin = lin.rstrip() #라인의 우측 공백 제거
        #print(lin), 선생님은 꼼꼼하게 결과물을 확인하시기 위해, print()문을 넣으셨다.
        wds = lin.split() #공백이 제거된 라인의 단어를 분리하여 wds 변수로 지정한다.
        #print(wds) # 분리된 단어들을 확인한다.
        for w in wds: # wds의 단어(원소)에 대해 반복문을 시행한다.
            #if the key is not there the count is zero 
            oldcount = di.get(w,0) # 딕셔너리 di에 원소를 추가한다. w를 키로, 처음 나오는 것이라면 0을 값으로 한다.
            print(w,'old',oldcount) # 키 w와 old라는 str과 oldcount라는 값을 산출한다.
            newcount = oldcount + 1 # 같은 키라면, oldcount 에 1을 더하여 newcount에 넣는다.
            di[w] = newcount # newcount를 di의 w의 값에 할당한다.

            #idiom: retrieve/create/update counter
            di[w] = di.get(w,0) +1 #get을 이용하여 위와 동일한 과정을 진행한다.
            print(w, 'new',di[w])


 

print(di)

#now we want to find the most common word, 가장 큰 값을 가진 단어를 산출하기 위해서.
largest = -1 #모두 양수 값을 가지므로, largest라는 변수에 -1을 넣어 놓고
theword = None # 가장 많은 던어에는 None값을 넣어 놓는다.
for k,v in di.items() : #di의 item에 대한 반복문을 진행하는데 k는 키고, v를 값이다.
    print(k,v) #먼저 k와 v를 꺼내 놓고
    if v > largest : # v가 기존의 largest 값보다 크다면
        largest = v # v는 largest에 할당되고
        theword = k #ccaptre/remeber the word that was larget # 그 k가 theword가 된다.
print('Largest is ',theword, largest)