안녕세계
[Python] dictionary 자료형 본문
[Python] dictionary 자료형
Junhong Kim 2018. 12. 3. 00:16파이썬에서 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 copy
와 deep 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/
'Language > Python' 카테고리의 다른 글
[Python] filter 함수 (0) | 2019.01.02 |
---|---|
[Python] try..except 예외처리 (0) | 2018.12.03 |
[Python] args와 kwargs (0) | 2018.12.02 |
[Python] Comprehension (List, Set, Dictionary) (0) | 2018.03.30 |
[Python] enumerate()를 활용한 index, value 동시 접근 (0) | 2018.03.29 |