Dictionary(사전형)
: 데이터를 구분짓기 위한 값을 index대신 key를 두고
key를 통해서 value값을 가져오는 형식
key와 value 를 1:1한쌍으로 데이터를 저장하는 저장소
value값은 key값을 통해서만 접근이 가능하다
※ 웹에서 기본적으로 데이터를 주고받는 형식
생성
{}를 이용해서 생성한다
데이터를 넣기 위해서는 key와 value 값을 같이 입력하여야 한다
형식
변수명 = {key:value , key:value , key:value...}
호출
변수명[key]
dic = { 'a' : 1, 'b' : 2,'c' : 3}
print(type(dic))
print(dic)
print(dic.__len__())
print(len(dic))
print(dic['a'])
for key in dic:
print(key," - ",dic[key])
출력화면
None
None == NULL, null
: 없는 값
a = None # a라는 변수에 아무런 값이 없다
print(a)
print(type(a))
출력화면
Dictionary 함수
update(dict)
: 사전형자료에 값을 추가한다.
key값이 같으면 value값을 수정하고, key값이 없으면 추가한다
dic = {'a':1,'b':2,'c':3}
print(dic)
dic.update({'a':0})
print(dic)
dic.update({'d':4 , 'e' : 5}) # 여러개 추가 가능
print(dic)
dic.setdefault('f',1) # 하나만 추가 가능 ; 같은 키값이면 아무런 일이 일어나지 않는다
print(dic)
출력화면
fromkeys(iter, value)
: 리스트,튜플에 존재하는 값을 키로 사전형자료를 생성하여 반환한다.
ls = [1,2,3,4] # key값이 된다
print(dic.fromkeys(ls,(1,2,3,4,5))) # value값이 된다
출력화면
get(key)
: 사전형의 키를 통해값을 반환한다
key값이 없으면 None을 반환
뒤에 value값을 적으면 key값이 없을 때 value값을 반환
print(dic.get('a')) # == dic['a']
print(dic.get('f'))
print(dic.get('g'))
print(dic.get('g',5))
출력화면
keys()
: 사전형의 모든키를 반환
print(dic.keys())
key = dic.keys()
print(type(key))
print(key)
for i in key:
print(i)
출력화면
# 리스트나 튜플타입으로 변환하여 사용 가능
key = list(key)
print(key[0])
출력화면
values()
: 사전형의 모든값을 반환
사전형의 기본 모토에 벗어나므로 잘 사용되지 않는다
리스트나 튜플타입으로 변환하여 사용 가능
print(dic.values())
value = dic.values()
for v in value:
print(v)
출력화면
items()
: 사전형의 모든 키-값의 쌍을 튜플로 반환
print(dic.items())
it = dic.items()
for k,v in it:
print(k,v)
출력화면
pop(key)
: 사전형의 키를 통해 값을 반환후 삭제
key 값이 있으면 삭제 , 없으면 error 발생
print(dic)
print(dic.pop('e'))
print(dic)
출력화면
popitem()
: 사전형의 키-밸류의 쌍을 튜플로 반환 후 삭제
(제일 마지막 데이터)
print(dic.popitem())
print(dic)
출력화면
clear()
: 사전형의 모든 키-값을 삭제하여 빈 사전형 자료만 남김
dic.clear()
print(dic)
출력화면
for key in d1
: Dictionary 내의 모든 키-밸류 쌍을 불러온다
ex1.
dl = {'음료':['탄산', '과일', '우유', '물'],
'식사':['김밥', '라면', '돈까스', '비빔밥']}
# 머릿속에 데이터 구조가 있어야 한다
# 변수명부터 순차적 접근
for key in dl:
print(key,end=" : ")
#print(type(dl[key]))
for i in range(dl[key].__len__()):
print(dl[key][i],end=" ")
print()
출력화면
ex2.
dic = {'음료':{"탄산":"콜라","우유":"서울우유","주스":"오렌지주스"},
'밥':{"분식":"라면","양식":"돈까스"}}
for key1 in dic:
print(key1)
for key2 in dic[key1]:
print("{} : {}".format(key2,dic[key1][key2]))
출력화면
ex3.
ld = [{'name':'Park', 'age':25, 'blood':'B'},
{'name':'Kim', 'age':27, 'blood':'A'}]
for i in range(ld.__len__()):
print("===============================")
print("{}번째 사람 정보".format(i + 1))
for key in ld[i]:
print("{} : {}".format(key,ld[i][key]))
출력화면
Exercise1
다음의 메뉴와 가격을 Key와 Value로 사용하여 사전형 자료를 만드시오. (변수명은 menu)
1. 칼국수(6000원), 비빔밥(5500원), 돼지국밥(7000원), 돈까스(7000원), 김밥(2000원), 라면(2500원)
2. 위에서 만든 사전형 자료 menu 변수에서
가격이 6000원 미만에 해당하는 메뉴와 가격을 출력하는 코드를 작성하시오.
3. 사용자 입력으로 메뉴와 가격을 입력 받아 menu 변수에 자료를 추가 할 수 있도록 하시오.
(동일한 메뉴는 가격만 변경)
4. 메뉴를 자동으로 선택하여 출력하는 코드를 작성 하시오.
#1
menu = {"칼국수":6000, "비빔밥":5500, "돼지국밥":7000, "돈까스":7000, "김밥":2000, "라면":2500}
#2
print("6000원 미만 메뉴")
for k, v in menu.items():
if v<6000:
print("{} : {}".format(k,v))
출력화면
#3
while True:
name = input("추가할 메뉴 입력(종료 시 exit 입력) : ")
if name=='exit':
print("프로그램이 종료됩니다")
break
price = input("추가할 메뉴의 가격 : ")
check = True
for k,v in menu.items():
if k==name:
menu.update({name:price})
print("{}의 가격이 {}원으로 변경되었습니다.".format(name, price))
check = False
break
if check:
menu.update({name:price})
print("{}의 가격이 {}원으로 추가되었습니다.".format(name, price))
print(menu)
출력화면
#4
menuList = list(menu.items()) # dic항목을 랜덤의 인덱스값으로 불러오기 위해 리스트로 변경
import random
ran = int(random.random()*menuList.__len__())
print("랜덤 메뉴 : {} {}원".format(menuList[ran][0], menuList[ran][1]))
출력화면
'Backend > Python' 카테고리의 다른 글
Python 파이썬 객체지향 프로그래밍 (0) | 2023.07.03 |
---|---|
Python 파이썬 디폴트매개변수, 키워드인자, 가변인자 (0) | 2023.07.03 |
Python 파이썬 함수 (0) | 2023.07.03 |
Python 파이썬 리스트 : 리스트 관련 함수 및 예제 (0) | 2023.07.03 |
Python 파이썬 튜플 : 인덱스, 슬라이싱, 요소, 메소드 (0) | 2023.07.03 |