JUNG씨 2022. 9. 23. 20:55

타임어택 구현 테스트

4. lambda를 활용해서 정렬해보기

아래 사용자들을 수학, 과학, 영어, 사회 점수의 총 합을 기준으로 총 합이 가장 높은 사람이 첫 번째에 오도록 정렬해주세요

from pprint import pprint

users = [
    {"name": "Ronald", "age": 30, "math_score": 93, "science_score": 65, "english_score": 93, "social_score": 92},
    {"name": "Amelia", "age": 24, "math_score": 88, "science_score": 52, "english_score": 78, "social_score": 91},
    {"name": "Nathaniel", "age": 28, "math_score": 48, "science_score": 40, "english_score": 49, "social_score": 91},
    {"name": "Sally", "age": 29, "math_score": 100, "science_score": 69, "english_score": 67, "social_score": 82},
    {"name": "Alexander", "age": 30, "math_score": 69, "science_score": 52, "english_score": 98, "social_score": 44},
    {"name": "Madge", "age": 22, "math_score": 52, "science_score": 63, "english_score": 54, "social_score": 47},
    {"name": "Trevor", "age": 23, "math_score": 89, "science_score": 88, "english_score": 69, "social_score": 93},
    {"name": "Andre", "age": 23, "math_score": 50, "science_score": 56, "english_score": 99, "social_score": 54},
    {"name": "Rodney", "age": 16, "math_score": 66, "science_score": 55, "english_score": 58, "social_score": 43},
    {"name": "Raymond", "age": 26, "math_score": 49, "science_score": 55, "english_score": 95, "social_score": 82},
    {"name": "Scott", "age": 15, "math_score": 85, "science_score": 92, "english_score": 56, "social_score": 85},
    {"name": "Jeanette", "age": 28, "math_score": 48, "science_score": 65, "english_score": 77, "social_score": 94},
    {"name": "Sallie", "age": 25, "math_score": 42, "science_score": 72, "english_score": 95, "social_score": 44},
    {"name": "Richard", "age": 21, "math_score": 71, "science_score": 95, "english_score": 61, "social_score": 59},
    {"name": "Callie", "age": 15, "math_score": 98, "science_score": 50, "english_score": 100, "social_score": 74},
]

# some code

pprint(users, width=300, sort_dicts=False)

📍 내가 작성한 코드

from pprint import pprint

users = [
    {"name": "Ronald", "age": 30, "math_score": 93, "science_score": 65, "english_score": 93, "social_score": 92},
    {"name": "Amelia", "age": 24, "math_score": 88, "science_score": 52, "english_score": 78, "social_score": 91},
    {"name": "Nathaniel", "age": 28, "math_score": 48, "science_score": 40, "english_score": 49, "social_score": 91},
    {"name": "Sally", "age": 29, "math_score": 100, "science_score": 69, "english_score": 67, "social_score": 82},
    {"name": "Alexander", "age": 30, "math_score": 69, "science_score": 52, "english_score": 98, "social_score": 44},
    {"name": "Madge", "age": 22, "math_score": 52, "science_score": 63, "english_score": 54, "social_score": 47},
    {"name": "Trevor", "age": 23, "math_score": 89, "science_score": 88, "english_score": 69, "social_score": 93},
    {"name": "Andre", "age": 23, "math_score": 50, "science_score": 56, "english_score": 99, "social_score": 54},
    {"name": "Rodney", "age": 16, "math_score": 66, "science_score": 55, "english_score": 58, "social_score": 43},
    {"name": "Raymond", "age": 26, "math_score": 49, "science_score": 55, "english_score": 95, "social_score": 82},
    {"name": "Scott", "age": 15, "math_score": 85, "science_score": 92, "english_score": 56, "social_score": 85},
    {"name": "Jeanette", "age": 28, "math_score": 48, "science_score": 65, "english_score": 77, "social_score": 94},
    {"name": "Sallie", "age": 25, "math_score": 42, "science_score": 72, "english_score": 95, "social_score": 44},
    {"name": "Richard", "age": 21, "math_score": 71, "science_score": 95, "english_score": 61, "social_score": 59},
    {"name": "Callie", "age": 15, "math_score": 98, "science_score": 50, "english_score": 100, "social_score": 74},
]

for i in range(len(users)):
    sum = users[i]['math_score'] + users[i]['science_score'] + users[i]['english_score'] + users[i]['social_score']
    users[i].update({'sum_score':sum})

users = sorted(users, key=(lambda x: x['sum_score']), reverse=True)
pprint(users, width=300, sort_dicts=False)

📍 또 다른 풀이방법

users.sort(key=lambda x: sum([x["math_score"], x["science_score"],x["english_score"], x["social_score"]]), reverse=True)
pprint(users, width=300, sort_dicts=False)

=> 나는 저번 과제에서도 그렇고 엄청 복잡하게 코드를 작성한것 같다. 람다식과 파이썬의 sum함수를 이용하면 한줄로 작성할수 있는데..!! 정답은 없지만 다양하게 생각할 수 있도록 더 연습을 많이 해야할것 같다.

 

✅ Django Framework ✅

📍 VS Code 에서 Django프로젝트 세팅 (터미널) 📍

 

▪️python -m venv 가상환경이름 : 가상환경을 만들어주는 명령어

   -> 가상환경이름은 convention으로 그대로 venv로 많이 씀!

▪️source 가상환경이름/bin/activate : 가상환경 활성화

▪️pip install Django : 장고 설치

▪️pip list : 설치된 리스트 확인

▪️django-admin startproject "프로젝트폴더명" : "프로젝트 폴더명"으로 프로젝트 생성

▪️python manage.py runserver : 가상환경이 실행되는지 확인

▪️python manage.py makemigrations : models.py에서 적용한 변경사항이나 추가된 혹은 삭제된 사항들을 감지하여 파일로 생성

▪️python manage.py migrate : 적용되지 않은(변경된) migrations들을 실제 DB 테이블에 적용하는 명령어

▪️deactivate : 가상환경 비활성화