본문 바로가기
Python/개념익히기

딕셔너리

by ADELA_J 2023. 3. 28.

*다시한번 짚고 넘어가는 리스트*

A. 리스트 : 인덱스를 기반으로 값을 저장하는 것

B. 딕셔너리 : 키(key)를 기반으로 값(value)을 저장하는 것

 

자료형 가리키는 위치 선언 형식 사용 예
리스트 인덱스 변수=[ ] list_a[1]
딕셔너리
▶'키:값' 형태
변수={ }
▶ 중괄호 사용
dict_a["name"]
딕셔너리이름["키"]
▶ 대괄호 사용
따옴표까지 똑같이해야
dict_b = {
	"director" : ['안소니 루소', '조 루소'], 
    "cast" : ["아이언맨", "타노스", "토르", "닥스"]
    }

▶ 딕셔너리이름(변수처럼사용) = {

                   "키(변수처럼사용)" :(종료라는표시) ['값1', 'value', … ,] (리스트로 나열됨) }

     ▷ 같은 성격으로 정리할때는 '리스트', 다른 성격들을 정리할때는 딕셔너리가 편함.

  ※NameError : 딕셔너리의 키에 따옴표 없이 단순하게 식별자를 입력하면 변수로 인식. 

    ex.name: "망고" > 원래는 "name" : "망고" 가 맞음. // 반드시 따옴표 해야함.

 

  b-1. 딕셔너리 [새로운 키] = 새로운 값 : 딕셔너리에 값 추가하기

         이미 존재하고 있는 키를 지정하고 값을 넣으면 새로운 값이 덮어씌워짐. append 는 안됨!

  b-2. del 딕셔너리["기존에 있는 키"] / 딕셔너리.pop("키") : 키 값 삭제

      b-1&2. 딕셔너리['새로운키이름'] = 딕셔너리.pop['키'] : 추가하고 삭제 동시에 됨.

   ※KeyError : 존재하지 않는 키에 접근하면 뜨는 에러. 리스트는 '인덱스'기반이니 'IndexError', 딕셔너리는 '키'기반이니 'KeyError'

 

  b-3. in 키워드 : 딕셔너리 내부에 키가 있는지 없는지 확인할 때, ex. if key in dictionary

  b-4. get() : 딕셔너리의 키로 값을 추출하는 기능. 존재하지 않는 키라면 에러가 아닌 None이 출력됨

        ex. 딕셔너리.get("키")

 

  b-5. for 키 변수/코드 in 딕셔너리 : 딕셔너리와 반복문 같이 사용하기.

 

▶ example

#딕셔너리를 선언
movie = {
    "name" : "Call",
    "type" : "호러",
    "cast" : ["네이밍1", "네임2", "너의이름", "너"],
    "age" : "12세이상이용가",
    "release" : "4 March",
    }
print("추가 및 삭제 전:", movie)

#새로운 값 추가 및 제거
movie["score"] = "4.5"
del movie["release"]

print("추가 및 삭제 후:", movie)

#존재하지 않는 키에 접근해 봅니다.
value = movie.get("No.")
print("값:", value)

#None 확인 방법
if value == None:
    print("존재하지 않는 키에 접근")

    
print()
#for 반복문 사용
for key in movie:
    #출력
    print(key, ":", movie[key])


print()
#딕셔너리의 값만 가져올때
for val in movie.values():
    print (val)

 
#사용자로부터 입력을 받습니다.
key = input("> 무엇이 궁금합니까?:")

#출력합니다
if key in movie:
    print(movie[key])
else:
    print("정보가 없습니다.")

#p227 확인문제 2번
#딕셔너리의 리스트를 선언
pets = [
    {"name": "구름", "age": 5},
    {"name": "초코", "age": 3},
    {"name": "아지", "age": 1},
    {"name": "호랑이", "age": 1}
]

print("# 우리 동네 애완 동물들")
for key in pets :
    #딕셔너리 값 추출/name과 age에서 가져와서 나이는 문자열로 바꿔주기
    print(key["name"], str(key["age"]) + "살")

#228 문제3번
#숫자는 무작위로 입력
numbers = [1,2,5,6,2,5,6,7,4,6,8,9,1,2,2,4,6]
counter = {}

for number in numbers:
    if number in counter:
        counter[number] = counter[number] + 1
    else:
        counter[number] = 1
        
print(counter)

#229 문제4번
#딕셔너리를 선언합니다.
char = {
    "name" : "기사",
    "level" : 12,
    "items" : {
        "sword": "불꽃의 검",
        "armor": "풀플레이트"
    },
    "skill": ["베기", "세게 베기", "아주 세게 베기"]
}

#for 반복문을 사용합니다.
for key in char:
    if type(char[key]) is dict:
        for small_key in char[key]:
            print(small_key, ":", char[key][small_key])
    elif type(char[key]) is list:
        for item in char[key]:
            print(key, ":", item)
    else:
        print(key, ":", char[key])

 

 

▶딕셔너리 만드는 방법

'Python > 개념익히기' 카테고리의 다른 글

while 반복문  (0) 2023.04.01
범위(range)  (0) 2023.03.29
for 반복문  (0) 2023.03.27
리스트  (0) 2023.03.27
0324 수업  (0) 2023.03.24