안녕세계

[Python] dictionary 자료형 본문

[Python] dictionary 자료형

Junhong Kim 2018. 12. 3. 00:16
728x90
반응형



파이썬에서 dict란?

{key: value} 형태로 사전(dictionary) 처럼 저장한 데이터 값을 말합니다.

person = { 'name': kim, 'age': 27, 'live': seoul } print(person['name']) # kim


key불변(immutable) 값이어야 합니다.

data = {} data['a'] = 'A' data[1] = 'ONE' data[('a', 'b')] = 'A and B'


hash 타입이 아닌 객체는 key가 될 수 없습니다.

data = {} data[['a', 'b']] = 'list key' # TypeError: unhashable type: 'list' data[{'a', 'b'}] = 'set key' # TypeError: unhashable type: 'set'


value함수(def)도 가능합니다.

def add(a, b): return a + b def sub(a, b): return a - b calculator = { 'add': add, 'sub': sub } print(calculator['add'](1, 2)) # 3 print(calculator['sub'](1, 2)) # -1

dict 메서드

key(), values(), items()

d = {'a': 1, 'b': 2} print(d.keys()) # dict_keys(['a', 'b']) print(d.values()) # dict_values([1, 2]) print(d.items()) # dict_items([('a', 1), ('b', 2)])


copy()

copy()에는 shallow copydeep copy 두 가지가 있습니다.
얕은복사는 복합개체만 새로 만들고 깊은복사는 복합객체와 내용물을 새로 만듭니다.

d = {'a': 1, 'b': 2} ref_d = d copy_d = d.copy() d['a'] = 10 d['b'] = 20 print(d) # {'a': 10, 'b': 20} print(ref_d) # {'a': 10, 'b': 20} print(copy_d) # {'a': 1, 'b': 2}


get()

d = {'a': 1, 'b': 2} print(d.get('a')) # 1 print(d.get('c')) # None print(d.get('c', 3)) # 3 print(d.setdefault('d', 4)) # 4 print(d.popitem()) # ('d', 4) print(d.pop('b')) # 2 print(d) # {'a': 1}

- get() : 메서드에 두번째 인자를 넘겨주면 첫번째 키가 없을 경우 두번째 인자를 반환합니다.

- setdefault() : 메서드로 값을 지정하면 키가 없을 경우 새로운 키를 딕셔너리에 넣고 값을 설정합니다.  

- popitem() : 메서드는 마지막 아이템을 꺼내고 딕셔너리에서 삭제합니다.  

- pop() : 메서드는 지정된 값을 꺼내고 딕셔너리에서 삭제합니다. 


update()

dict에 새로운 key-value를 추가하거나 수정합니다.

d = {'a': 1, 'b': 2} new_d = {'new': 'new'} d.update(new_d) print(d) # {'a': 1, 'b': 2, 'new': 'new'} d.update({'a': 'edit'}) print(d) # {'a': edit, 'b': 2, 'new': 'new'}


clear()

dict를 초기화 합니다.

d = {'a': 1, 'b': 2} print(d.clear()) # None


dict 순회

d = {'a': 1, 'b': 2} for key in d.keys(): print(key, d[key]) # a 1 # b 2 for key in d: print(key, d[key]) # a 1 # b 2 for key, value in d.items(): print(key, value) # a 1 # b 2


dict 정렬

key 순으로 정렬

d = {'b': 2, 'c': 1, 'a': 3} items = d.items() soted_items = sorted(items) # 알파벳 순서로 정렬 print(soted_items) # [('a', 3), ('b', 2), ('c', 1)]


value 순으로 정렬

d = {'b': 2, 'c': 1, 'a': 3} sorted_items = sorted(d.items(), key=lambda item: item[1]) print(sorted_items) # [('c', 1), ('b', 2), ('a', 3)]


for..in을 사용한 정렬

d = {'b': 2, 'c': 1, 'a': 3} for key, value in sorted(d.items(), key=lambda item: item[1]): print(key, value) # c 1 # b 2 # a 3

References

http://devh.kr/2017/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC/


728x90
반응형
Comments