딕셔너리 는 키(key) 와 값(value) 의 쌍으로 이루어진다.
dic = {}
dic['test'] = "test2"
print(dic)
# {'test': 'test2'}
print(dic['test'])
# test2
del dic['test']
print(dic)
# {}
딕셔너리의 키 또는 값 만 리스트로 가져오기
family = {'boy': 'choi', 'girl': 'kim', 'baby': 'choi'}
family # 값을 넣는 순서대로 저장되지는 않음.
{'girl': 'kim', 'boy': 'choi', 'baby': 'choi'}
family.keys() # 딕셔너리 family의 키들을 새로운 리스트에 담는다.
['girl', 'boy', 'baby']
family.values() # family의 값들을 새로운 리스트에 담는다.
['kim', 'choi', 'choi']
딕셔너리 키가 있는지 체크 방법
'boy' in family
True
'sister' in family
False
연습 문제
숫자 읽기 (0~9) - 매게변수로 입력 받은 정수에 해당하는 한글 문자열로 반환 ,단 if 문을 사용하지말것
def korean_number():
num = int(input())
dic = {0:'영',1:'일',2:'이',3:'삼',4:'사',5:'오',6:'육',7:'칠',8:'팔',9:'구'}
return dic[num]
if __name__ == '__main__':
print( korean_number() )
ord() ,chr() 함수
ord('A')
# 65
ord('Z')
# 90
chr(65)
# 'A'
ord('가')
# 44032
chr(55197)
# '힝'
딕셔너리에 key = 한국어 value = 영어 로 넣어라.
txt = '''신경발달장애 Neurodevelopmental Disorders
조현병 스펙트럼 및 기타 정신병적 장애 Schizophrenia Spectrum and Other Psychotic Disorders
양극성 및 관련 장애 Bipolar and Related Disorders
우울장애 Depressive Disorders
불안장애 Anxiety Disorder
강박 및 관련 장애 Obsessive-Compulsive and Related Disorders
외상 및 스트레스 관련 장애 Trauma-and Stressor-Related Disorders
해리장애 Dissociative Disorders
신체증상 및 관련 장애 Somatic Symptom and Related Disorders
급식 및 섭식장애 Feeding and Eating Disorders
배설장애 Elimination Disorders
수면-각성 장애 Sleep-Wake Disorders
성기능부전 Sexual Dysfunctions
성별 불쾌감 Gender Dysphoria
파괴적, 충동조절 및 품행 장애 Disruptive, Impulse-Control, and Conduct Disorders
물질관련 및 중독 장애 Substance-Related and Addictive Disorders
신경인지장애 Neurocognitive Disorders
성격장애 Personality Disorders
변태성욕장애 Paraphilic Disorders
기타 정신질환 Other Mental Disorders'''
disorders = dict()
is_eng = lambda x: 65 <= ord(x) <= 90 or 97 <= ord(x) <= 122
for l in txt.splitlines():
i = 0
while not is_eng(l[i]):
i += 1
else:
ko, en = l[:i - 1], l[i:]
disorders[ko] = en
print(disorders)
프랙털
0 과 1로 이루어진 문자열에서 정해진규칙에 맞게 다음 행 생성하기
colwidth = 61 # 문자열의 총 길이
rule90 = {'000':'0', '001':'1', '010':'0', '011':'1', '100':'1', '101':'0', '110':'1', '111':'0'}
half = colwidth // 2 # 총길이의 절반
line = '0' * half + '1' + '0' * half # 첫 문단 가운데에 1 넣기
print(line) # 첫 출력
while line[1] == '0': # 문단의 두번째 글자가 0일때 멈춤
prev = line
line = '0' * colwidth # 0을 총 길이만큼 만들고
for i in range(1, colwidth - 1): # 리스트 1이상 총길이 -1 미만 생성 후 반복문
line = line[:i] + rule90[prev[i-1:i+2]] + line[i+1:]
# 문단의 첫번째 + 첫번째부터 3개출력후 rule90 에서 체크 중간 문자 가져오기 + 세번째 이사부터 끝까지
print(line)
세트 (SET)
fruits = {'apple', 'banana', 'orange'}
fruits.add('mango') # 세트에 원소 추가
{'orange', 'apple', 'mango', 'banana'}
companies = set() # 빈 세트 생성
fruits & companies # 교집합
{'apple'}
fruits | companies # 합집합
{'apple', 'mango', 'microsoft', 'orange', 'google', 'banana'}
list_of_sets = [fruits, companies]
set.intersection(*list_of_sets) # 교집합
{'apple'}
set.union(*list_of_sets) # 합집합
{'google', 'apple', 'banana', 'mango', 'microsoft', 'orange'}
alphabet = list('google')
alphabet
['g', 'o', 'o', 'g', 'l', 'e']
set(alphabet) # 세트는 중복되는 원소를 같지않고 순서 또한 유지하지 않는다
{'e', 'o', 'g', 'l'}
S1 = {1, 2, 3, 4, 5, 6, 7}
S2 = {3, 6, 9}
S1 - S2 # 집합끼리 뺄셈은 가능하다
{1, 2, 4, 5, 7}
연습 문제
두 주사위의 합을 중복되지 않게 출력 해보기
dice1 = (1, 2, 3, 4, 5, 6)
dice2 = (2, 3, 5, 7, 11, 13)
arr = set()
for a in dice1:
for b in dice2:
arr.add(a+b)
print(arr)
'PYTHON > 기본 문법' 카테고리의 다른 글
PYTHON - 튜플 (0) | 2022.11.10 |
---|---|
PYTHON - 문자열 리스트 (0) | 2022.11.10 |
PYTHON - 데이터 타입 (0) | 2022.11.08 |
PYTHON 기본 문법 (함수) (0) | 2022.11.08 |
PYTHON 기본 문법 ( for , match - case 문 ) (1) | 2022.11.08 |