정의
딕셔너리는 순서가 없는 리스트로 원소들의 인덱싱은 키(key)에 의해서 이루어진다. 원리는 실제 딕셔너리 즉, 사전과 동일하다. 사전에는 단어에 의해서 상응하는 정의들이 연결되어 있다.
파이썬의 딕셔너리들은 기본적으로 변수가 자연적인 순서가 없는 경우, 유용한 변수이다. 딕셔너리는 콤마(,)를 사용해서 키와 값의 쌍으로 정의된다. 이러한 키와 값 쌍은 중괄호 {}에 의해서 둘러싸게 되면 딕셔너리로 정의된다.
변수 만들어보기
빈 딕셔너리는 아래와 같이 중괄호 {} 를 사용해서 만들 수 있고, .type() 함수 해당 변수의 타입을 확인하면 dict 라고 나타난다.
dic = {}
type(dic)
또는
dic = dict()
// dict
딕셔너리에 키와 값을 정의할 땐 키 : 값 (키와 값 사이에 콜론 : 사용)을 입력하고, 그 다음 쌍은 콤마(,)를 사용해 구분해서 추가한다. 어떠한 형태도 정의할 수 있고, 키들끼리도 같은 변수 형태일 필요가 없다. 아래 예시처럼 상응하는 값들을 문자열, 정수, 리스트로 제각기 다르다.
dic = {1:"first", 2:2, "a":[1,2,3]}
dic
{1: 'first', 2: 2, 'a': [1, 2, 3]}
위에 예시를 dict() 함수를 사용해서 정의해보자, 여기서 중요한 점은 아래와 같이 입력 인자들을 중괄호 {}를 사용할 때와 동일하게 하면 안된다는 것이다.
dic = dict(1:"first", 2:2, "a":[1,2,3])
dic
File "<ipython-input-12-f2c9351a0c30>", line 1
dic = dict(1:"first", 2:2, "a":[1,2,3])
^
SyntaxError: invalid syntax
위와 같은 에러를 줄텐데 dict() 함수를 사용해서 키와 값을 정의할려면, 키 #1 = 값#1, 키 #2 = 값#2 이런식으로 콜론이 아닌 등호를 사용해야한다, 그런데 에러가 발생했다.
dic = dict(1=first, 2=2, a=[1,2,3])
dic
File "<ipython-input-14-7d6d37840680>", line 1
dic = dict(1=first, 2=2, a=[1,2,3])
^
SyntaxError: keyword can't be an expression
dict() 함수에서 등호 = 를 사용해서 딕셔너리를 정의하려면 반드시 모든 키가 문자열이어야 한다, 모든 키가 문자열일 때에는 단순하게 아래와 같이 등호를 사용해서 딕셔너리를 정의할 수 있다.
simple = dict(a = 1, b = [1, 2], c = "c")
simple
{'a' : 1, 'b' : [1,2], 'c' : "c"}
dict() 함수를 사용해서 키에 대해서 변수 제약조건이 없는 딕셔너리를 만들려면 키와 값을 튜플로 정의하고 전체를 리스트로 구성하는 방법이 있다.
dic = dict([(1, "first"), (2,2), ("a",[1,2,3])])
dic
{1 : 'first', 2 : 2, 'a' : [1,2,3]}
마지막으로 다룰 부분은 for 문을 사용해서 키와 값 사이에 특정한 패턴이 있는 경우에 손쉽게 딕셔너리를 정의할 수 있다. 아래와 같이 for 문을 값 오른쪽에 두고 정의하면 된다
dic = {x : 3 * x for x in (1, 2, 3)}
dic
{1: 3, 2: 6, 3: 9}
키/값 확인
dic = {1: 'first', 2: 2, 'a': [1,2,3]}
dic["a"]
[1, 2, 3]
결과는 위와 같이 키 a에 해당하는 값인 리스트 [1,2,3]이 출력 된다. 마찬가지로 키 1에 해당하는 값은 아래와 같이 얻을 수 있다
dic[1]
'first'
키/값 쌍 수정 및 추가 하기
없던 키를 넣어주어 새로운 키/값 쌍을 만들 수 있다. 이건 키를 이용해서 값을 확인하는 방법과 비슷한데, 아래와 같이 보낼 딕셔너리에는 없는 키를 확인하도록 하며, 여기에 어떤 값을 넣어주면 알아서 새로운 키/값 쌍이 해당 딕셔너리에 추가된다.
dic = {1: 'first', 2: 2, 'a': [1,2,3]}
dic["b"] = "new"
dic
{1: 'first', 2: 2, 'a': [1,2,3], 'b': 'new'}
위에서 보듯이, 본래 딕셔너리에는 없는 "b"라는 문자열을 키로 넣어 확인해보라고 한 뒤, "new" 라는 문자열을 할당하면 키/값 쌍은 본래 있던 딕셔너리 dic에 업데이트 된 것을 볼 수 있다. 그러면 본래 있던 키를 다시 다른 값으로 정의한다면
dic["b"] = "old"
dic
{1: 'first', 2: 2, 'a': [1,2,3], 'b': 'old'}
위의 결과를 보면 덮어 씌운다는 것을 알 수 있다. 즉, 새롭게 정의 되는게 무조건 우선시 된다, 기존의 것은 무시되며 우선시 되는거는 튜플이 있다.
키/값 쌍 삭제하기
del 함수를 사용하면 된
del dic["b"]
dic
{1: 'first', 2: 2, 'a': [1,2,3]}
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 문자열 함수 모음 (0) | 2024.08.26 |
---|---|
[Python] 딕셔너리 키, 값 쌍 얻기 - items() (0) | 2024.08.26 |
[Python] 아스키 코드 (Ascii Code) 사용하기 (0) | 2024.08.05 |
[Python] 포메팅 format (0) | 2024.07.31 |
[Python] enum형 (0) | 2024.07.16 |