*다시한번 짚고 넘어가는 리스트*
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])
▶딕셔너리 만드는 방법