[Python] Dictionary 사용법

kiwonkim·2021년 4월 23일

🤔 Dictionary란

  • Hash를 자료 구조 기반으로 하며, Key와 Value로 값이 매핑되어있는 구조이다.
  • 자바와 달리 Key와 Value의 자료형이 달라도 매핑 가능하다.

생성하기

>>dict()
{}

>>d = dict(aaa = 1, bbb = 2, ccc = 3)
{'aaa' : 1, 'bbb' : 2, 'ccc' : 3}

>>d = {'a' : 1, 'b' : 2, 'c' : 3}
{'a' : 1, 'b' : 2, c :'3'}

dict 함수로 생성하면 매핑에 '=' 을 사용. 좌항은 자료형 구분X. 자동캐스팅됨.
{} 로 생성하면 매핑에 ':' 을 사용. 좌항도 int/string 구분.


원소 접근하기

>> print(d['b'])
2

value의 접근에는 dict이름[key] 를 사용한다.
인덱스는 지원하지 않는다.


원소 추가/변경/삭제

>> d["d"] = 4

원소 추가는 새로운 key와 value을 할당하면 된다.

>> d["d"] = 5

원소 변경은 해당 key의 value를 재정의해주면 된다.

>> del d["d"]

원소의 삭제는 del 함수로 key 값을 제거한다.


key와 value값 추출하기

>>d.keys()
dict_keys(['a', 'b', 'c', 'd])

keys 함수로 키값들만 추출할 수 있다.
dict_keys 라는 자료형으로 저장된다.

>>d.values()
dict_values([1, 2, 3, 5])

values 함수로 value값들만 추출할 수 있다.
dict_values 라는 자료형으로 저장된다.

>>d.items()
dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 5)])

items 함수는 key와 value 값 쌍을 투플로 묶어서 반환한다.

위의 함수들의 결과물은 주로 list 함수로 형변환하여 사용한다.


병합하기

>> d1 = {"a":1, "b":2}
>> d2 = {"b":1, "d":2}
>> d1.update(d2)
{"a":1, "b":1, "d":2}

update 함수로 딕셔너리를 합치는데, 딕셔너리에서는 키 값의 중복이 없다.
따라서 중복되는 key의 value는 뒤 딕셔너리의 value로 변경된다.

>>d3 = {**d1, **d2}
{"a":1, "b":1, "d":2}

update는 d1의 결과를 변경시키므로.
병합결과로 새로운 dict 를 만들고싶으면 **를 사용한다.


데이터 순회하기

>> for key, value in d1.items():
print(key, value)
a 1
b 2

items()는 (key, value) 투플값을 갖고 있으므로 for문을 돌면서 확인하면된다.

0개의 댓글