같은 혈액형의 사람 수를 구하라

문제

여러 사람의 혈액형(A, B, AB, O)에 대한 정보가 담긴 list가 있다.
이를 이용하여 key는 혈액형의 종류, value는 사람 수인 dictionary를 만드시오.

blood_types = [ 'A','A','O', 'B', 'A', 'O', 'AB','O', 'A', 'B', 'O', 'B', 'AB']

 

 


풀이는 아래~~

생각 해보기

1. 딕셔너리를 만들어야 한다.

2. key값을 혈액형으로 만든다.

3. value는 리스트의 같은 값을 가지는 문자열의 수

4. for문을 돌려 딕셔너리에 추가하면 대충 나올 것 같다....

 


풀이

blood_types = [ 'A','A','O', 'B', 'A', 'O', 'AB','O', 'A', 'B', 'O', 'B', 'AB']  
person_dict = {}

for blood in blood_types:  
    if blood in person_dict:  
    person_dict[blood] += 1  
    else:
    person_dict[blood] = 1

print(person_dict) {'A': 5, 'AB': 2, 'B': 3, 'O': 1}

함수로 만들 경우

def count_blood(lst):
    new_dict = {}
    for i in lst:
        if i in new_dict:
            new_dict[i] += 1
        else:
            new_dict[i] = 1
    return new_dict

count_blood([
'A', 'B', 'A', 'O', 'AB', 'AB',
'O', 'A', 'B', 'O', 'B', 'AB',
]) # => {'A': 3, 'B': 3, 'O': 3, 'AB': 3}

 


해설

blood_types란 리스트가 주어지고

person_dic라는 새로운 딕셔너리를 만들었다. 문제는 지금부터다. 여기에 어떻게 넣어야 할까?

1. for문을 돌려 리스트를 순회한다.

2. 여기에 조건문을 더해준다.

조건

blood가 person_dic의 key값으로 존재한다면, value에 +1

아니라면, key값에 blood를 넣어주고, value에 1를 기본 설정

(예로 첫 blood는 존재하지 않아 A라는 key와 1이라는 value를 만들 것)

 


딕셔너리 추가 방법!

person_dict이라는 빈 딕셔너리를 만들었다. 이때 딕셔너리 추가 방법?

person_dict['key로 할 값'] = value로 만들 값

만약 key는 'a' value는 1로 하고 싶다면,

person_dic['a'] = 1
복사했습니다!