Python -dict

Python -dict

💡

dict(키를 이용하여 값을 저장하는 자료형)
정수형 인덱스가 아닌 키로 값을 저장하기 때문에 저장된 순서는 무의미
key는 중복 불가(immutable), value(mutable)는 중복 가능

d = dict()
print(d, type(d))

결과
{} <class 'dict'>

d ={}
print(d, type(d))

결과
{} <class 'dict'>

d= {"a": 1, "b": 2,"c":3}
print(d)

d['a'] =10
print(d)

d['d'] =4
print(d)

#print(d['k']) #없는 key는 에러
print(d.get('k', 100)) #없는 경우 default 적용

결과:
{'a': 1, 'b': 2, 'c': 3}
{'a': 10, 'b': 2, 'c': 3}
{'a': 10, 'b': 2, 'c': 3, 'd': 4}

dict.keys() / dict.values()

print(d.keys())

# value 가져오기
print(d.values())
tmp = list(d.values())
print(tmp, type(tmp))
tmp =[i for i in d.values()]
print(tmp, type(tmp))

print(d.items())

[결과]
dict_keys(['a', 'b', 'c', 'd'])
dict_values([10, 2, 3, 4])
[10, 2, 3, 4] <class 'list'>
dict_items([('a', 10), ('b', 2), ('c', 3), ('d', 4)])
#방법 1
for k in d:
  print(k, d[k], sep="," , end="/")

#방법 2
for k in d.keys():
  print(k, d[k], sep="," , end="/")

for k in d.values():
  print(k, sep="," , end="/")
print()

결과:
a,10/b,2/c,3/d,4/
10/2/3/4/

setdefault : 추가만 가능

d.setdefault('e') # value 없이 넣을 경우, 값은 None
print(d)
d.setdefault('f',5) # value 없이 넣을 경우, 값은 None
print(d)

결과:
{'a': 10, 'b': 2, 'c': 3, 'd': 4, 'e': None}
{'a': 10, 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 5}

update : 추가 수정 가능

d.update(a=1)
d.update(a=1, f=100)
d.update(a='one', g='6')
print(d)
print(d.pop('z',100)) # 기본값 설정으로 값이 없어도 에러가 발생하지 않음
print(d.popitem())  #python 3.6 이상 에서는 맨끝, 이하 에서는 임의로 출력

결과:
{'a': 10, 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 5}
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 5}
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 100}
{'a': 'one', 'b': 2, 'c': 3, 'd': 4, 'e': None, 'f': 100, 'g': '6'}
100 # 기본값 설정으로 값이 없어도 에러가 발생하지 않음
('g', '6')  #python 3.6 이상 에서는 맨끝, 이하 에서는 임의로 출력