study blog

Python 자료구조 2 - Mapping type(dict) 본문

Python/2. built in types

Python 자료구조 2 - Mapping type(dict)

ivo_lee 2020. 1. 26. 16:22

 Mapping type(dict)

- dict

{key1:value1, key2:value2, ...} 형태

a = {"name":"홍길동","age":30}   #JSON과 완전히 동일
print(type(a))   # <class 'dict'>

- key와 value의 쌍으로 표현되는 자료구조 
- key값은 불변의 값을 사용해야 함! (문자열 등)
- list는 key로 사용할 수 없음! (리스트 안의 요소를 변경할 수 있기 때문에) 
- tuple은 key로 사용할 수 있음! (불변)


1. dict 기본

# dict에 값 입력

a[10]="hohoho"   # a가 리스트면 11번째 방에 hohoho넣어라  
                 # 10 : key , hohoho: value 
print(a)   # {'name': '홍길동', 'age': 30, 10: 'hohoho'}

a["hobby"]="Game" 
print(a)  # {'name': '홍길동', 'age': 30, 10: 'hohoho', 'hobby': 'Game'} 


# dict의 key값으로 value 호출

print(a["age"])  # 30   


# 동일한 키가 2개일 경우 → 동일한 키 사용하면 안됨

a = {"name":"홍길동", "age":30, "age":40} 
print(a)    # {'name': '홍길동', 'age': 40}  # 하나가 무시됨  


# dict 내에 tuple을 key값으로 

a = {"name":"홍길동",("address",):"서울"} 
print(a)  # {'name': '홍길동', ('address',): '서울'} 
print(a[("address",)])   # 서울 (key값으로 value 호출) 

2. dict의 함수 

① a.keys() : 해당 dict의 key 가져옴

- dict_keys 자료구조로 리턴   

- list와 유사한 자료구조 

a = {"name":"홍길동","age":20,"address":"서울"}  

myKey = a.keys()  
print(myKey)     # dict_keys(['name', 'age', 'address']) -> 리스트 아님 but 리스트처럼 생긴 자료구조  

② a.values() : value 가져옴 

myVal = a.values()  
print(myVal)    # dict_values(['홍길동', 20, '서울'])  
print(list(myVal))  # ['홍길동', 20, '서울']  

a.items() : key-value 쌍을 튜플로 가져옴

myItem = a.items()  
print(myItem)   # dict_items([('name', '홍길동'), ('age', 20), ('address', '서울')])  


[연습문제] dict 안에 있는 모든 key와 value를 출력하시오.

# for문을 이용해서   
for k in a.keys():  
    print("{}-{}".format(k, a[k]))  # 문자열 format 잡아서 출력  앞의 {} : k, 뒤의 {}: a[k]  
print("hohoho")      # for문 안에 있는 것 아니므로 1번밖에 안나옴.  
 
print("age" in a)  #  특정 key값이 a에 있는지 확인. # True  # value 아님!

 

Comments