파이썬 | 수학 | |
리스트 | 중복 순열 | [] |
튜플 | 순서쌍 | () |
세트 | 집합 | {} |
딕셔너리 | 사상(=mapping) 함수와 비슷. | {:} |
세트는 요소의 순서가 정해지지 않으며 중복이 안된다.
set = {}를 하면 딕셔너리가 만들어진다.
집합을 이용한 여러가지 연산이 가능하다.
합연산: or연산자 |
>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> a | b
{1, 2, 3, 4, 5, 6}
>>> set.union(a, b)
{1, 2, 3, 4, 5, 6}
교집합: &
>>> a & b
{3, 4}
>>> set.intersection(a, b)
{3, 4}
차집합:
>>> a - b
{1, 2}
>>> set.difference(a, b)
{1, 2}
exclusive or XOR: ^
>>> a ^ b
{1, 2, 5, 6}
>>> set.symmetric_difference(a, b)
{1, 2, 5, 6}
딕셔너리
리스트나 튜플은 값 여러개를 저장
만약 게임 캐릭터의 능력치를 리스트에 저장한다면?
lux = [490, 334, 550, 18.72]
딕셔너리는 { }(중괄호) 안에 키: 값 형식으로 저장하며 각 키와 값은 ,(콤마)로 구분
- 딕셔너리 = {키1: 값1, 키2: 값2}
>>> lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
키값이 중복이 된다면?
>>> lux = {'health': 490, 'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health'] # 키가 중복되면 가장 뒤에 있는 값만 사용함
800
저장이 되지 x
키는 문자열 뿐 아니라 모든 자료형이 가능하다.
>>> x = {100: 'hundred', False: 0, 3.5: [3.5, 3.5]}
>>> x
{100: 'hundred', False: 0, 3.5: [3.5, 3.5]}
- 빈 딕셔너리는 {}를 사용하거나 dict() 이용
아래는 딕셔너리를 만드는 여러가지 방법이다.
>>> lux1 = dict(health=490, mana=334, melee=550, armor=18.72) # 키=값 형식으로 딕셔너리를 만듦
>>> lux1
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux2 = dict(zip(['health', 'mana', 'melee', 'armor'], [490, 334, 550, 18.72])) # zip 함수로
>>> lux2 # 키 리스트와 값 리스트를 묶음
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
*zip함수에 대해
name = ['merona', 'gugucon']
price = [500, 1000]
z = zip(name, price)
print(list(z))
>>> lux3 = dict([('health', 490), ('mana', 334), ('melee', 550), ('armor', 18.72)])
>>> lux3 # (키, 값) 형식의 튜플로 딕셔너리를 만듦
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux4 = dict({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}) # dict 안에서
>>> lux4 # 중괄호로 딕셔너리를 만듦
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
키에 접근할 시 대괄호를 이용한다.
>>> lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health']
490
>>> lux['armor']
18.72
딕셔너리 값 할당
>>> lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health'] = 2037 # 키 'health'의 값을 2037로 변경
>>> lux['mana_regen'] = 3.28
딕셔너리에 값 있는지 확인
>>> lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> 'health' in lux
True
>>> 'attack_speed' in lux
False
len(dict)도 가능.
딕셔너리 출력
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for key, value in x.items():
... print(key, value)
.items()로 키값 쌍을 얻을 수 있음
키만 출력하기
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for i in x:
... print(i, end=' ')
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for key in x.keys():
... print(key, end=' ')
...
a b c d
값만 출력하기
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for value in x.values():
... print(value, end=' ')
...
10 20 30 40
.keys() dict_keys라는 객체 생성
.values() dict_keys라는 객체 생성
value로 키 찾기. 리스트 중복에 주의.
aa = {'0': 'AA',
'1': 'BB',
'2': 'CC'}
aa.get('2')
aa = ['AA', 'BB', 'CC']
bb = {k:v for k,v in enumerate(aa)} #// {0: 'AA', 1: 'BB', 2: 'CC'}
bb.get(2) #// 결과: 'CC'
cc = {v:k for k,v in enumerate(aa)} #// {'AA': 0, 'BB': 1, 'CC': 2}
cc.get('CC') #// 결과: 2
예제
다음 소스 코드를 완성하여 게임 캐릭터의 체력(health)과 이동 속도(movement speed)가 출력되게 만드세요.
camille = {
'health': 575.6,
'health_regen': 1.7,
'mana': 338.8,
'mana_regen': 1.63,
'melee': 125,
'attack_damage': 60,
'attack_speed': 0.625,
'armor': 26,
'magic_resistance': 32.1,
'movement_speed': 340
}
print( )
print( )
딕셔너리에 키-값 쌍 추가
setdefault(키, 기본값)
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> x.setdefault('e')
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None}
>>> x.setdefault('f', 100)
100
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None, 'f': 100}
수정하기
update
>>> x.update(a=900, f=60)
>>> x
{'a': 900, 'b': 20, 'c': 30, 'd': 40, 'e': 50, 'f': 60}
update는 키가 문자열일 때만 사용 가능. 키가 숫자일 때
>>> y = {1: 'one', 2: 'two'}
>>> y.update({1: 'ONE', 3: 'THREE'})
>>> y
{1: 'ONE', 2: 'two', 3: 'THREE'}
삭제하기 pop()과del 이용
>>> x.pop('z', 0)
0
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> del x['a']
>>> x
{'b': 20, 'c': 30, 'd': 40}
'파이썬 스터디' 카테고리의 다른 글
파이썬 중급 문법 (0) | 2024.11.13 |
---|---|
파이썬 메소드 (0) | 2024.11.02 |
4. 파이썬 기본 문법 - 리스트 및 튜플 심화 (5) | 2024.08.14 |
강의할 것 (0) | 2024.08.14 |
파이썬 헷갈리는 것 (0) | 2024.06.03 |