Small Grey Outline Pointer python :: Dictionary 딕셔너리
본문 바로가기
Dev./Python

python :: Dictionary 딕셔너리

by sso. 2022. 7. 12.

항상 한 쌍으로 저장되어 관리 한다

len() 를 사용하면 한 쌍을 1로 카운트 한다 

키 값은 중복이 될 수 없으며 값은 중복이 가능하다

키 값을 주면 그 키의 짝꿍 값을 가지고 온다

 

dict 선언

dict명 = {키 : 값,  키 : 값, ....}



dict 사용

-추가(키 값이 없을 때)

dict명[키] = 값 //아예 새롭게 추가하는 경우



-수정(키 값이 있을 때)

dict명[키] = 값



-삭제(한 쌍이 삭제 된다)

del dict명[키]



-검색

키 in dict명 : 키 값이 있으면 참

키 not in dict명 : 키 값이 없으면 참



key 분리

list(dict명.keys())


Value 분리

dict명.values()

 

 

딕셔너리는 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

이것이 바로 딕셔너리의 가장 큰 특징

 

 

list Test 01

#%% list Test 01 
t1 =[1,2,3]
t2 =[1,2,3]
t3 =[3,2,1]
print(t1 == t2)
print(t1 == t3) #list가 순서와 값이 모두 같아야 True로 반환된다

True

False

 

 

dict Test 02

==연산을 대상으로 관찰하는 딕셔너리 성격

# %% dict Test 02
# ==연산을 대상으로 관찰하는 딕셔너리 성격
d1={1:'a',2:'b'}
d2={1:'a',2:'b'}
d3={2:'b',1:'a'}
print(d1==d2)
print(d1==d3) #딕셔너리는 값의 순서에 상관없다

True

True

 


 

dc={
    '코카콜라' : 900,
    '바나나맛우유':750,
    '비타500':600,
    '삼다수':450
}

print(dc)
# key 와 value 를 쌍으로 묶는다

key와 value는 어떤 값이든 상관 없다

문자열, 정수, 실수, 튜플 리스트 등등 제한이 없다

 

딕셔너리에서의 key 값은 중복이 불가능하다

값의 저장 순서가 중요하지 않다

 

 

# %% 
dc={
    '이순둥': 22,
    '이순둥': 23,
    '이순둥': 24,
}

print(dc)

{'이순둥': 24}

key값의 중복으로 왜곡이 일어나 마지막 값만 출력 된다

 

 

 


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

 

 

dc={
    '코카콜라' : 900,
    '바나나맛우유':750,
    '비타500':600,
    '삼다수':450
}

v= dc['삼다수']
print(v)

450

 

인덱싱 연산을 사용해서 value를 얻어 온다

 

 

 

딕셔너리 수정

 

dc={
    '코카콜라' : 900,
    '바나나맛우유':750,
    '비타500':600,
    '삼다수':450
}

dc['삼다수'] = 500
print(dc)

{'코카콜라': 900, '바나나맛우유': 750, '비타500': 600, '삼다수': 500}

 

 

딕셔너리와 for 루프

# %% 딕셔너리와 for 루프
dc={'새우깡':700, '콘치즈':850, '꼬깔콘':750}
dc['조리퐁']=650
for i in dc:
    print(i, end=' ')

# %% for루프2
dc={'새우깡':700, '콘치즈':850, '꼬깔콘':750}
for i in dc:
    dc[i] += 70
print(dc)

새우깡 콘치즈 꼬깔콘 조리퐁

{'새우깡': 770, '콘치즈': 920, '꼬깔콘': 820}

 

# 딕셔너리에 저장된 값이 순서대로 출력된다는 보장은 없다 순서에 대한 생각은 안하는 게 좋다

 

 

 

 


 

dict Test

# dict Test
중국집 = {"자장면" : 1500, "짬뽕":2500}
print(len(중국집))
print(중국집["자장면"]) #딕셔너리의 [키값] => value값이 나옴

2 #key와 value 값이 한 쌍이므로 길이는 2가 나온다

1500 #"자장면"의 value 값이 출력 된다

 

if "자장면" in 중국집 :
    중국집["자장면"] = 4000
print(중국집)

{'자장면': 4000, '짬뽕': 2500}

 

if "탕수육" not in 중국집 : #탕수육은 중국집dict에 없던 키값이므로 새로 추가 된다
    중국집["탕수육"] = 9000
print(중국집)

{'자장면': 4000, '짬뽕': 2500, '탕수육': 9000}

 

del 중국집["짬뽕"]
print(중국집)

{'자장면': 4000, '탕수육': 9000}

 

 

 

key값을 분리해서 가져오고 싶을 때

for i in 중국집.keys():
    print(i)

자장면
짬뽕
탕수육

 

 

인덱스 번호로 가져오고 싶을 때

for i in range(len(중국집)):
    print(str(i+1) + ". " + list(중국집.keys())[i])

1. 자장면
2. 짬뽕
3. 탕수육

 

# str(i+1)번의 list(중국집.keys())[i]) 째 메뉴

중국집.keys() 를 분리해서 각각의 [i] 인덱스에 접근하기 위해 list로 형변환

 

 

 

평균 가격 구하기

avg = total / len(중국집)
# print("평균 가격: "+ str(avg)+ "원")
print("평균 가격: %.2f원" %avg)

평균 가격: 5166.67원

 

 

 

 

 

728x90

'Dev. > Python' 카테고리의 다른 글

python :: 객체 지향 프로그래밍  (0) 2022.07.14
python :: 전역변수와 지역변수  (0) 2022.07.14
python :: 모듈  (0) 2022.07.05
python :: 튜플과 레인지  (0) 2022.07.01
python :: if ~ elif~ else / 연산자 예제  (0) 2022.06.30

댓글