[Python-Basic] dict 메소드

조상래·2021년 6월 8일
0

python

목록 보기
7/8

- dir 함수를 이용하여 dict 객체의 메소드를 확인할 수 있다.

'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'와 같은 메소드가 존재한다.

(주관적인 중요도에 따라 *을 붙이겠다)

1. clear

temp = {'a': 1, 'b': 2, 'c': 3}
dup = temp
dup.clear()
print(temp, dup) # {} {}

dup 과 temp은 같은 메모리 주소를 참조하고 clear()는 메모리 주소 자체를 초기화 시키는 메소드 인걸 알 수 있다.

2. copy

temp = {'a': 1, 'b': 2, 'c': 3}
cpy = temp.copy()
temp.clear()
print(temp, cpy) # {} {'a': 1, 'b': 2, 'c': 3}

copy()는 새로운 메모리 주소값으로 깊은 복사 (Deep Copy)를 하는 메소드이다.

3. fromkeys

keys = ['a', 'b', 'c']

print(dict.fromkeys(keys, 1)) # {'a': 1, 'b': 1, 'c': 1}

지정한 keys로 새로운 dict를 생성. 두 번째 인자는 벨류를 입력 생략 시 None으로 입력된다.

4. get *

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

print(temp.get('a')) # 1
print(temp.get('d')) # None

해당 키가 존재하면 해당키의 벨류를 존재하지 않는다면 None을 출력.

5. items *

temp = {'a': 1, 'b': 2, 'c': 3}
items = temp.items()

print(items) # dict_items([('a', 1), ('b', 2), ('c', 3)])

for i in items:
    print(i) #('a', 1) / ('b', 2) / ('c', 3)

키, 벨류 쌍을 튜플로 출력.

6. keys **

temp = {'a': 1, 'b': 2, 'c': 3}
keys = temp.keys()

print(keys) # dict_keys(['a', 'b', 'c'])

for i in keys:
    print(i) # a / b / c

키를 담은 새로운 객체를 생성 list() 함수를 이용하여 리스트로 변환이 가능하다.

7. pop

temp = {'a': 1, 'b': 2, 'c': 3}
pop = temp.pop('a')

print(pop, temp) # 1 {'b': 2, 'c': 3}

해당 키, 벨류 쌍을 제거 후 벨류 를 리턴. 만약 키가 존재하지 않는다면 에러.

8. popitem

temp = {'a': 1, 'b': 2, 'c': 3}
pop = temp.popitem()
pop2 = temp.popitem()

print(pop, pop2, temp) # ('c', 3) ('b', 2) {'a': 1}

튜플로 된 임의의 키, 값 썅을 리턴. 빈 dict이면 에러.

9. setdefault

temp = {'a': 1, 'b': 2, 'c': 3}
set_default = temp.setdefault('b')
temp.setdefault('d', 4)

print(set_default, temp) # 2 {'a': 1, 'b': 2, 'c': 3, 'd': 4}

키, 값을 순서로 인자를 입력한다.

만약 키가 존재하면 해당 키의 값을 리턴 기존의 인자의 값으로 수정되지 않는다.
만약 키가 존재하지 않는다면 인자로 입력한 키, 벨류 쌍을 추가

10. update *

temp = {'a': 1, 'b': 2, 'c': 3}
temp.update({'d': 4})
temp.update({'b': 3})

print(temp) # {'a': 1, 'b': 3, 'c': 3, 'd': 4}

새로운 dict를 기존의 dict에 assign.

11 values **

temp = {'a': 1, 'b': 2, 'c': 3}
values = temp.values()

print(values) # dict_values([1, 2, 3])

for i in values:
    print(i) # 1/ 2/ 3

존재하는 벨류를 새로운 객체로 리턴한다. list()를 이용하여 list로 변환이 가능하다. 중복 체크는 하지 않는다. 예를들어 벨류 중 2가 두개 존재하면 두개 모두 포함해 리턴.

profile
Codestates Full IM26기 수료

0개의 댓글