본문 바로가기

파이썬 Python

초급 7 딕셔너리, 프로그램 설계

{딕셔너리}

>>> dict = {"사과":5000, "바나나":3000}
>>> dict
{'사과': 5000, '바나나': 3000}

>>> dict["사과"]
5000

>>> dict["바나나"]
3000

>>> dict["없음"]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: '없음'
>>> dict["사과"] = 7000
>>> dict
{'사과': 7000, '바나나': 3000}

>>> dict["오렌지"] = 9000
>>> dict
{'사과': 7000, '바나나': 3000, '오렌지': 9000}

>>> del dict["사과"]
>>> dict
{'바나나': 3000, '오렌지': 9000}

>>> del dict["없음"]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: '없음'

 

In:

dict = {"바나나": 3000, "오렌지": 9000}

for i in dict:
    print(i, dict[i])

Out:

바나나 3000
오렌지 9000

items를 이용해서 같은 프로그램을 다음과 같이 작성할 수도 있다.

dict = {"바나나": 3000, "오렌지": 9000}

for key, value in dict.items():
    print(key, value)

items가 딕셔너리의 key와 value를 리턴함을 알 수 있다.

 

프로그램 설계

최빈값 구하기

test.txt
0.00MB

In:

def load_data(file):
    f = open(file, "rt", encoding="utf-8")
    lt_num_data = {}
    for i in range(0, 20):
        temp = []
        for j in f.readline().split():
            temp.append(int(j))

        # key: i + 회차
        lt_num_data[str(i+1) + "회차"] = temp

    f.close()

    return lt_num_data


def count(data):
    result = {}
    for key, value in data.items():
        for i in value:
            if i not in result:
                result[i] = 1
            else:
                result[i] += 1

    return result


def get_mode(count):
    number = 0
    mode = 0
    for key, value in count.items():
        if mode < value:
            number = key
            mode = value

    return number, mode


data = load_data("C:/Users/Public/PythonStudy/test.txt")
# print("데이터 가져오기 성공:", data)

count_result = count(data)
# print("count 결과 값:", count_result)

result_number, result_mode = get_mode(count_result)
# print("숫자 " + str(result_number)+"이(가) " + str(result_mode)+"번 당첨되었습니다.")

# 소팅 sorting
for i in sorted(count_result):
    print(i, ":", count_result[i])

Out:

1 : 1
2 : 4
3 : 3
4 : 3
6 : 3
7 : 2
8 : 1
9 : 4
10 : 2
11 : 2
12 : 2
13 : 2
14 : 3
15 : 1
16 : 5
17 : 2
18 : 1
19 : 3
20 : 1
21 : 3
22 : 1
23 : 3
24 : 2
25 : 6
26 : 2
27 : 3
29 : 2
30 : 5
31 : 4
32 : 3
33 : 3
34 : 1
35 : 1
36 : 2
37 : 7
38 : 3
39 : 4
40 : 8
41 : 3
42 : 6
43 : 1
44 : 1
45 : 1

 

예외 처리

파일 경로를 잘못 입력한 경우

In:

try:
    f = open("C:/Users/Public/PythonStudy/tes.txt", 'rt', encoding="utf-8")
except OSError as e:
    print(e)

Out:

[Errno 2] No such file or directory: 'C:/Users/Public/PythonStudy/tes.txt'

 

값을 잘못 전달한 경우

In:

try:
    f = open("C:/Users/Public/PythonStudy/tes.txt", 'ert', encoding="utf-8")
except OSError as e:
    print(e)
except ValueError as e:
    print(e)

Out:

invalid mode: 'ert'

 

try:
    f = open("C:/Users/Public/PythonStudy/test.txt", 'rt', encoding="utf-8")
except OSError as e:
    print(e)
except ValueError as e:
    print(e)
finally:
    print("항상 출력됩니다")

finally 문은 try 문에서 에러가 발생하든 발생하지 않든 실행된다.

'파이썬 Python' 카테고리의 다른 글

초급 9 XML  (0) 2021.01.15
초급 8 REST, JSON  (0) 2021.01.14
초급 6 파일 입출력, 변수 범위  (0) 2021.01.13
초급 5 문자열  (0) 2021.01.13
초급 4 함수 정의, 문자열  (0) 2021.01.13