[Python] 딕셔너리

ㅎㅎ·2021년 5월 17일
0

Python

목록 보기
7/27




📌 딕셔너리 (Dictionary)

  • "이름" = "홍길동"과 같은 대응관계를 갖고 있는 자료형
  • 즉, key와 value를 한 쌍으로 갖는 자료형. 예를들어 key가 "baseball"이라면 value는 "야구"가 된다.
  • 리스트와 튜플과 달리 딕셔녀리는 순차적으로 요솟값을 구하지 않고 key를 통해 value를 찾는다. 즉 단어의 뜻을 찾기 위해 모든 내용을 '순차적으로' 검색하는 것이 아니라 key를 검색 내용을 찾는 것.
#딕셔너리

- dict = {Key1:Value1, Key2:Value2, Key3:Value3, ...}
- dict = {'이름':'디카프리오', '나이':'20', '대표작': '타이타닉'} 
- dict = { 'a': [1,2,3]} #--> value안에 리스트도 가능.

📌 딕셔너리 활용하기

- 딕셔너리 쌍 추가, 삭제하기

1. 딕셔너리 쌍 추가하기

>>> a = {1: 'a'}

# 추가하기
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}

#추가하기
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}

2. 딕셔너리 요소 삭제하기

  • del a[key]를 이용해 삭제
# 지정한 key에 해당하는 {key:value}가 삭제
>>> del a[1]

>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

- 딕셔너리에서 Key 사용해 value 얻기

  • 요솟값을 얻을때 인덱싱이나 슬라이싱을 사용한 리스트,튜플,문자열과는 달리 딕셔너리는 key를 이용해서 value를 구해야 한다.
>>> grade = {'pey': 10, 'julliet': 99}

>>> grade['pey'] #key이용해
10 # value 얻기

>>> grade['julliet'] # key이용해
99 #value 얻기

- 딕셔너리 만들 때 주의사항

  • key는 교유한 값이므로 중복되는 key 값을 설정하면 하나를 제외한 나머지는 다 무시된다.
  • key에는 리스트는 쓸 수 없으나 튜플은 쓸 수 있다. 딕셔너리의 key로 쓸수 있느냐 없느냐의 차이는 key값이 변하는 값인지에 따라에 달라진다. 따라서 리스트는 값이 변할 수 있으므로 key에는 쓸수 없으며, 튜플은 변하지 않으니 key로 쓸수 있다.

📌 딕셔너리 관련 함수들

1. a.keys() : 딕셔너리 a의 key만을 모아서 dict_keys객체를 돌려줌. (파이썬 3.0 버전 이후)

a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
b =  a.keys()

print(b)
#dict_keys객체를 돌려줌. list 아님. 
--> dict_keys(['name', 'phone', 'birth'])

# type 확인
print(type(b))
--> <class 'dict_keys'>
  • 리스트로 변환하지 않아도 기본적인 반복(iterate) 구문에 사용가능함. ex)for문
a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}

for i in a.keys():
    print(i)

-->
name
phone
birth
  • 리스트가 필요한 경우 -> list() 로 바꾸기
a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}

c = list(a.keys())
print(c)
--> ['name', 'phone', 'birth']

2. a.values() : 딕셔너리 a의 value를 모아 dict_value객체를 돌려줌.

a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}

a.values()
--> dict_values(['pey', '0119993323', '1118'])
  • 위와 동일하게 리스트로 변환하지 않아도 반복(iterate)구문에 사용 가능함. ex) for문.
#반복
for i in a.values():
    print(i)
    
-->
pey
0119993323
1118

3. a.items() : 딕셔너리 a의 key와 value를 쌍으로 튜플로 묶어 dict_items로 돌려줌.

a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}

a.items()
--> dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
  • 위와 동일하게 리스트로 변환하지 않아도 반복(iterate)구문에 사용 가능함. ex) for문.
# 반복 
for i in a.items():
    print(i)
    
-->
('name', 'pey')
('phone', '0119993323')
('birth', '1118')

4. a.clear() : 딕셔너리 안에있는 Key,value 모두 요소 삭제.


5. a.get() : get함수를 이용해 Key로 value얻기

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'
  • 만약 딕셔너리안에 찾으려는 Key값이 없는 경우 none을 반환하지만, 미리 정해둔 디폴트를 넣을 수 있음.
a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

print(a.get("foo"))
-> none 
# foo가 없다면, bar을 반환해라
print(a.get("foo","bar"))
-> bar

6. key in a : 해당 key가 딕셔너리 안에 있는지 조사하기

  • 해당 key가 딕셔너리 a안에 있으면 true, 아니면 false 반환힘.
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

0개의 댓글