우선 파이썬의 데이터 타입들의 특징을 정리하고 갈 필요가 있다. python의 데이터 array타입 중에 어떤 요소를 써야 할지 궁금해서 검색을 해본 결과 나와 같은 궁금증을 가진 사람들이 많았다.
list vs tuple vs dict - stackoverflow
<참고>
파이썬 array 비교
답변을 대략적으로 정리하면
list : 순서가 존재 중복값 가능
dict , set는 순서가 없어서 인덱스로 조회가 불가능
dict의 key, set는 중복 값 포함 불가
Dict : 키와 값으로 구성
list, set는 값만으로 구성
set: 값들이 unhahsable 해야 한다. --hash함수에 사용 불가
hashable의 관해 작성한 글
tuple: immutable (수정불가능)
특히 딕셔너리는 각 키에 값들이 따라올 때 쓰면 좋은 array다.
battle_class = {
'knight': {
'hp': 100,
'mp' : 50,
'skill': 'swing'
},
'clerik' : {
'hp': 50,
'mp' : 100,
'skill': 'heal'
},
'archer' : {
'hp': 30,
'mp' : 50,
'skill': 'shoot'
}
}
battle_class['knight']['skill'] --> swing
이 딕셔너리의 문법에 대해서 좀 더 정리해보기로 했다.
dictionary는 키와 값으로 구성
{key : value}
x = {'a':10, 'b':20, 'c':30, 'd':40}
update
x = {'a':10, 'b':20, 'c':30, 'd':40}
new_dict = {"a": 90}
x.update(a)
pop
x.pop (key)
clear
x.clear
get
x.get('key')
items
x.items()
keys
x.keys()
values
x.values()
중요한 점은 .items
, .keys
, .values
은 리스트가 아닌 iterable한 dict 객체로 잡힌다는 것이다. (데이터 타입 문제 발생 , 반복문 가능 )
dict_items([('a', 10), ('b', 20)('c', 30), ('d', 40)])
dict_keys(['a', 'b', 'c', 'd'])
dict_values([10, 20, 30, 40])
x = {key : value for key, value in dict.fromkeys(keys).items()}
x = {key: value for key,value in x.items() if value != 20}