728x90

파이썬(Phython)의 dictionary 는 Java 의 Hashmap 에 해당되는 기능이다.

 

dictionary

- 키와 값을 갖는 데이터 구조

- 키는 내부적으로 hash 값으로 저장

- 순서를 따지지 않음. 즉, 인덱스가 없음

 

dictionary type은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합

x = dict() 또는 { } 로 선언한다.

print(x) 를 하면 { } 로 출력된다.

값은 중복될 수 있지만, 키가 중복되면 마지막 값으로 덮어쓰기된다.

순서가 없기 때문에 인덱스로는 접근할수 없고, 키로 접근 할 수 있다.

key는 변할 수 없는 자료형. ← 리스트는 안되고, 튜플은 된다.

 

리스트는 [index] 로 값을 확인하고,

딕셔너리는 [key] 로 값을 확인한다.

 

= {
  "name" : "홍길동",
  "age" : 25,
  0 : "Hello",
  1 : "How are you?"
}
 
print(x)
# 출력 결과는 {'name': '홍길동', 'age': 25, 0: 'Hello', 1: 'How are you?'}
 
print(x["name"])
print(x["age"])
 
# dictionary의 in은 키에 한해서 동작한다.
# age 이라는 key가 x에 들어 있나요?
print("age" in x) # True
 
# dictionary 에 있는 모든 키를 보여줘.
print(x.keys())
# 출력 결과 : dict_keys(['name', 'age', 0, 1])
 
# 반복문 for key in 딕셔너리:
for key in x:
  print("key: " + str(key) + ", value: " + str(x[key]))

 

 

항목 추가

= {
  "name" : "홍길동",
  "age" : 25,
  0 : "Hello",
  1 : "How are you?"
}
 
# 자료 추가하기 : mutable 한 객체이므로 키로 접근하여 값을 변경할 수 있다.
x["school"= "파이썬 강좌"
 
print(x)
# 출력결과 : {'name': '홍길동', 'age': 25, 0: 'Hello', 1: 'How are you?', 'school': '파이썬 강좌'}
 

 

# 1. 대응 관계가 5개 있는 Dictionary를 만들고, 이를 변수 my_dict에 넣어봅시다.
my_dict = {1:"one"2:"two"3:"three"4:"four"5:"five"}
 
# 2. 다음 두 메서드를 이용해서, Dictionary의 Key값들을 담은 
# 변수 var1과 Value값들을 담은 변수 var2를 만들어봅시다.
var1 = my_dict.keys()
var2 = my_dict.values()
print(var1)  # dict_keys([1, 2, 3, 4, 5])
print(var2)  # dict_values(['one', 'two', 'three', 'four', 'five'])
 

 

 

응용예제

# list
fruit = ["사과""사과""바나나""딸기""바나나""키위""복숭아""키위""키위"]
 
# dictionary 선언
= {}
 
for f in fruit:
    # f = "사과"
    if f in d: # "사과" 라는 key가 d 라는 dictionary에 들어 있어?
        d[f] = d[f] + 1  # 그럼 "사과" 갯수를 하나 올려줘.
    else : # "사과" 라는 key가 없으면,
        d[f] = 1 # 그걸 dictionary에 넣고 value = 1 로 만들어줘.
 
print(d)

 

update()

- 두 딕셔너리를 병합함

- 겹치는 키가 있다면 parameter로 전달되는 키 값이 overwrite 된다.

 

= {'a':1'b':2'c':3 }
= {'a':2'd':4'e':5 }
a.update(b)
print(a) # {'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

 

key 삭제

- del 키워드 사용

- pop 함수 이용

 

= 100
print(c)
del c
# print(c) # NameError: name 'c' is not defined
 
= {'a':1'b':2'c':3'd':4'e':5 }
a.pop('b')
del a['d']
print(a) # {'a': 1, 'c': 3, 'e': 5}
 
# clear() : 딕셔너리의 모든 값을 초기화
a.clear()
print(a)  # {}

 

 

in

- key값 존재 확인

value access

- dict[key]로 접근, 키가 없는 경우 에러 발생

- .get() 함수로 접근, 키가 없는 경우 None 반환

 

# 빈 Dictionary를 만들고, 이를 변수 my_dict에 넣어보자.
my_dict = {}
 
my_dict[1= "Integer"
my_dict['a'= "String"
my_dict[(123)] = "Tuple"
 
print(my_dict) # {1: 'Integer', 'a': 'String', (1, 2, 3): 'Tuple'}
 
# key값 존재 확인
print(1 in my_dict)
print((123in my_dict)
 
# value access
# dict[key]로 접근, 키가 없는 경우 에러 발생
# .get() 함수로 접근, 키가 없는 경우 None 반환
print(my_dict.get('a'))
print(my_dict.get((123)))
 
my_dict['c'= 3
print(my_dict)
# {1: 'Integer', 'a': 'String', (1, 2, 3): 'Tuple', 'c': 3}
 
try:
    # 여기에 [1, 2, 3] → "List"의 대응관계를 만들어 봅시다.
    my_dict[[123]] = "List"
except TypeError:
    print("List는 Dictionary의 Key가 될 수 없습니다.")

 

 

# 다음 대응관계가 담긴 Dictionary를 하나 만들고, 이를 변수 my_dict에 넣어보자.
# “사과” → “apple”
# “바나나” → “banana”
# “당근” → “carrot”
 
my_dict = {"사과":"apple","바나나":"banana""당근":"carrot" }
 
# my_dict에서 “사과”를 Key로 넣어 나온 Value를 변수 var1에 넣어보자
var1 = my_dict["사과"]
print(var1)
 
# my_dict에서 당근-carrot을 제거해 보자
# del 딕셔너리["키"]
del my_dict["당근"]
print(my_dict) # {'사과': 'apple', '바나나': 'banana'}
 
# my_dict에서 체리-cherry를 추가해 보자
my_dict["체리"= "cherry"
print(my_dict) # {'사과': 'apple', '바나나': 'banana', '체리': 'cherry'}
 
 

모든 keys, values 접근

- keys() : 키만 반환

- values() : 값만 반환

- items() : 키, 값의 튜플을 반환

= {'a':1'b':2'c':3}
print(a)
print(a.keys())   # dict_keys(['a', 'b', 'c'])
print(a.values()) # dict_values([1, 2, 3])
print(a.items())  # dict_items([('a', 1), ('b', 2), ('c', 3)])

 

리스트(list)로 변환할 수 있다.

= {'a':1'b':2'c':3}
print(a)
print(list(a.keys()))   # ['a', 'b', 'c']
print(list(a.values())) # [1, 2, 3]

 

 

for key, value in miniWord.items():

# Minionese와 한국어가 담긴 miniWord 딕셔너리를 만드세요.
miniWord = {
  "Bello":"안녕",
  "Poopaye":"잘가",
  "Tank_yu":"고마워",
  "Tulaliloo_ti_amo":"우린 너를 사랑해"
}
 
for key, value in miniWord.items():
  print(value)

 

 

'파이썬 > Python 기초' 카테고리의 다른 글

[파이썬 기초] 클래스(class)  (0) 2021.01.01
[파이썬기초] Tuple(튜플)  (0) 2021.01.01
[파이썬 기초] 반복문 for, while  (0) 2020.12.29
[파이썬 기초] 함수와 조건문  (0) 2020.12.29
[파이썬기초] List  (0) 2020.08.10
블로그 이미지

Link2Me

,