Programming/Python

중학생도 이해하는 파이썬 이야기 - 4가지 데이터타입 2부

양국남자 2023. 9. 22. 01:14

조 : 형 요즘 왤케 바빴어? 나 나머지 두개 얘기해주려고 얼마나 목 빼고 기다렸는지 알아?

 

양 : 개인적인 일에다가 머 준비하느라 바빳지. 그럼 한번 세트하고 딕셔너리 이야기 해 보자. 야 너네 나잇대 애들한테 세트는 롤 캐릭터 이름 아니니?

 

Sett 입니다. Set 아닙니다.

조 : 아니 무슨 소리야. 이래봐도 형 조카인데. 그리고 그 세트는 t 가 하나 더 붙었어! 

 

양 : 그러면 파이썬 세트는 어떤 데이터 타입인데? 강펀치를 날리거나 사람 잡아다 매다꽂지는 않을거 아냐? (좀 더 도발해야지)

 

조 : 아 잼민이도 안하는 롤드립... 그런데 롤로 다시 돌아가자면 세트 데이터 형식이 롤 포지션이나 챔피언 입력에 상당히 적합한 타입이야. 형 빌드업 맨시티급인데?

 

양: 왜 그렇지?

 

조: 왜냐면 세트 데이터 타입은 중복을 허용하지 않아. 그러니까 뭐 파이썬 방식으로 표현하자면 이렇게 표현할 수 있어.

 

#세트는 {} 을 활용해서 표기한다
positions = {'top','jungle','mid','adc','support'}

 

그리고 중복을 허용하지 않기 때문에 롤 랭겜처럼 미러전이 생길 수 없는 상황에서 표기할 때 쓸 수도 있겠지.

 

mid_mages = {'Ahri','LeBlanc','Lissandra','Syndra','Ahri','LeBlanc'}
print(mid_mages)
#{'Ahri','LeBlanc','Lissandra','Syndra'}로 나옴.

양 : 뭐랄까 두명이 중복픽을 하는지 확인을 하기 좋겠네. 위에 너가 대준 예시에서도 아리하고 르블랑이 중복됬으니까. 그 외에 내가 하나 웃기는 점 말해줄까?

 

조 : 그게 뭔데?

 

양 : set 나 기타 파이썬 자료구조에서 '1' 과 'True'는 같은 거로 취급되. 즉,

 

test_set = {"apple", "banana", "cherry", True, 1, 2}

print(test_set)

#{True, 2, 'banana', 'cherry', 'apple'} 라고 나옴.

조 : 아 그건 나도 몰랐어. 뭐 True 하고 1을 같은 세트에 묶을 일이 잘 없겠지만, 나중에 유의해야겠네.

 

양: 마지막으로, Dictionary 는 뭐야?

 

조 : 문자 그대로 사전처럼 A는 B이다 라고 정의를 해주는거야. 꼭 사전적 정의에 쓰지는 않아도 분류가 있는 데이터를 저장할 때 쓰면 유용해. 예를 들면 이런식으로 내가 2022~2023 년도의 우승팀들을 정의해볼게.

 

competitions_2223 = {"EPL": "Man City", "FA Cup" : "Man City", "UEFA" : "Man City", "Community Shield" : "Arsenal", "Carabao Cup" : "Man Utd", "Carabao Cup" : "Man City"}

양 : 카라바오가 두개 있네. 맨유가 이기지 않았어? 

 

조: Dictionary 는 key 와 value 로 이렇게 이뤄져있어. value 는 보다시피 맨시티가 많고, 얼마든지 중복이 가능해. 그런데 key는 중복할 수 없어. 한 시즌에 한 대회를 우승한 팀이 두개 있을 수 없듯이 말이야. 만일 내가 UEFA를 우승한 팀을 찾고 싶다면 key 를 통해 competitions_2223["UEFA"] 식으로 호출하면 "Man City" 가 호출될거야.아니면 .get("UEFA") 식으로 호출해도 되고.

 

양: 혹시 딕셔너리의 사용 용례에 대해서 알고 있니?

 

조 : 내가 알기로는 JSON인가? 형이 더 잘 알거 아냐? 그런거 에 쓰인다고는 하는데?

 

양 : JSON 도 딕셔너리의 형식을 좀 빌려서 key-value pair 로 저장해. 그보다는 파이썬식의 간결한 프로그램을 짤때도 사용하고. 대표적인게 파이썬에서 사용되는 lambda 함수인데, 짧게 정의할 수 있는 함수는 그냥 key-value로 "대강 이건 이렇게 처리해라" 하고 넘길 때 사용해.

 

data = [(1, 5), (2, 3), (3, 9), (4, 1)]
sorted_data = sorted(data, key=lambda x: x[1])

print(sorted_data)  
# 결과: [(4, 1), (2, 3), (1, 5), (3, 9)]

그 외에도 판다스 데이터프레임 조작, .apply 등 꽤 많으니까 직접 파이썬을 하며 익혀보도록!