본문 바로가기
Base/Python

7. 딕셔너리와 반복문

by 귀멸 2023. 2. 15.

 

혼공파 32 ~ 34강

1. 딕셔너리와 반복문

# 마트에서 어떤 제품 관리
products = [
  ['건망고 슬라이스', 4000, '식품', 400, '태국', '2023-0804'],
  ['인스타360 링크', 140000],
  ['와콤 프로펜', 150000]
]
products[0] # ?
products[1] # ?
products[2] # ?

# 딕셔너리라는 새로운 자료형 탄생
# {}을 사용하며 키:값으로 짝지어진 자료 형태
# 키 : 숫자, 문자열, 불(, 튜플)
# 값 : 모든 값
product = {
  "제품명":"건망고 슬라이스",
  "가격": 4000,
  "분류": "식품",
  "원산지": "태국"
}
product["제품명"] # "건망고 슬라이스"
product["가격"] # 4000
product["분류"] # "식품"

# 딕셔너리 반복문

for key in product:
  print(key)
  print(product[key])
  print("-" * 20)

# 리스트에 딕셔너리를 사용한 중첩

products = [{
  "제품명":"건망고 슬라이스",
  "가격": 4000,
  "분류": "식품",
  "원산지": "태국"
}, {
  "제품명":"건망고 슬라이스",
  "가격": 4000,
  "분류": "식품",
  "원산지": "태국"
}]
for product in products:
  for key in product:
    print(key)
    print(product[key])
    print()
  print("-"*20)

2. 딕셔너리 자료 추가 / 제거

product = {
  "name": "7D 건조 망고",
  "type": "당절임"
}
print(product) # {'name': '7D 건조 망고', 'type': '당절임'}

# 요소의 값을 변경하는 방법
product["name"] = "8D 건조 망고"
# 요소를 추가하는 방법
product["price"] = 4000
# 요소를 제거하는 방법
del product["type"]
# 키의 존재 확인하는 방법
print("price" in product) # 존재 여부 결과로 True or False
if "price" in product:
  print(product["price"])
else:
  print("아직 가격 요소가 없습니다.")
# get()
print(product.get("name"))
print(product.get("유통기한"))
## 존재하지 않는 키를 get()에 넣어도 오류를 발생시키지 않고,
## None 값을 리턴한다.
if product.get("price") != None:
  print(product["price"])
else:
  print("아직 가격 요소가 없습니다.")

3. 연습 문제

1 - 빈도 

#1 빈도 (Frequency)

numbers = [1,2,6,8,4,3,2,1,9,5,4,9,7,2,1,3,5,4,8,9,7,2,3]
counter = {}
counter2 = {}

## (1) 요소의 출현을 확인하는 코드 : 요소를 초기화
## (2) 해당 요소의 빈도를 확인하는 코드
for number in numbers:
  if number not in counter:
    counter[number] = 0
  counter[number] += 1
print(counter)

for number in numbers:
  if number not in counter2:
    counter2[number] = ""
  counter2[number] += "■"   # 히스토그램으로 표현

for key in sorted(counter2.keys()):
  print(f"{key}: {counter2[key]}")

 

2 - 자료형 확인

#1 자료형 확인 응용
character = {
  "name" : "기사",
  "level" : 12,
  "item" : {
    "sword": "불꽃의 검",
    "armor": "풀플레이트"
  },
  "skill": ["베기", "세게 베기", "아주 세게 베기"]
}

for key in character:
  if type(character[key]) is dict:
    for 키 in character[key]:
      print(f"{키} : {character[key][키]}")
  elif type(character[key]) is list:
    for 요소 in character[key]:
      print(f"skill : {요소}")
  else:
    print(f"{key} : {character[key]}")

댓글