728x90

시퀀스
: 순서화된 값의 집합체를 저장할 수 있는 데이터 타입
-> 단일 식별자로 연속된 저장 공간 접근 수단 제공
-> 개별 원소의 값을 수정, 추가, 삭제 가능
-> 원소의 나열을 저장할 수 있는 타입
*리스트, 세트, 투플, 딕셔너리 등

딕셔너리
: 키와 값의 쌍을 저장하는 시퀀스

-구문형식
딕셔너리_이름 = {키1:값1, 키2:값2, ..., 키n:값n}
*키와 값을 :으로 연결후 ,로 나열
-> 세트, 리스트, 딕셔너리는 키 불가능
-빈 딕셔너리 생성 구문형식
딕셔너리_이름 = {}
딕셔너리_이름 = dict{}
-추가 구문형식
딕셔너리_이름[키] = 값
-삭제 구문형식
del 딕셔너리_이름[키]
딕셔너리 멤버

딕셔너리 순회
-순회
: 각각의 항목을 순서대로 한 번씩만 방문하는 과정
-순회 형식
for key in dictionary:
print(key + ":" + str(dictionary[key])
key 사용블록
데이터 분석 프로그램
: "Hamlet_by_Shakespeare.txt" 파일에 포함된 단어가 출현한 횟수를 출력하는 프로그램을 작성하시오.
h_fp = open("Hamlet_by_Shakespeare.txt", "r")
#빈 딕셔너리 생성
word_dict = dict()
#텍스트를 줄 단위로 읽어낸다
for line in h_fp.readlines():
#라인단위의 한 줄에 있는 여러 단어들을 하나 하나씩 끊어주어야 한다.
#strip : 불필요한 개행문자 제거
#split : 결과물을 하나씩 분할
for word in line.strip().split():
#제거할 문자들을 모두 입력
#인용 부호를 나타낼 때에는 "가 아닌 \"라고 적어주어야 함(", ')
word = word.strip(".,:?[]\"\'-").lower()
#(정돈된)word를 word_dict의 key로 가져온 것
#is not None : 있다면
if word_dictionary.get(word) is not None:
count = word_dict[word]
else:
count = 0
word_dict[word] = count + 1
#key와 value를 바꾸어 줄 새로운 딕셔너리 생성
#word_dict에서 리스트로 가져온 것들의 key와 value를 뒤바꾸어 새로운 word_r_dict에 넣기
word_r_dict = {v:k for (k, v) in word_dic.items() }
#정렬을 쉽게 해 주는 내장함수 sorted -> key값으로만 정렬 가능
#reverse=True : 내림차순으로 정렬하는 sorted함수의 옵션
#word_r_dict에서 가져온 것들을 정렬
word_dict = {k:v for (v, k) in sorted(word_r_dict.items(), reverse=True)}
#딕셔너리 순회
for key in word_dict:
#100회 이상 등장하는 단어만 출력
if word_dict[key] >= 100:
#key값(단어들)과 카운트한 횟수(word_dict[key])를 출력하는 작업
print("["+key+"]", str(word_dict[key]) + "회")
#파일을 사용하고 난 후에는 꼭 close() 처리해줄 것
h_fp.close()
출력(정렬 전):

출력(정렬 후):

728x90
'방통대 > 파이썬' 카테고리의 다른 글
[파이썬] 12강. 파일 연습 문제 (0) | 2024.05.10 |
---|---|
[파이썬] 12-1 파일 (0) | 2024.05.09 |
[파이썬] 11강. 모듈 연습 문제 (0) | 2024.05.02 |
[파이썬] 11-2 유용한 모듈 (2) | 2024.05.02 |
[파이썬] 11-1 모듈 (2) | 2024.05.02 |