딕셔너리의 value끼리 나누는 방법

조회수 879회

예를 들어

a = {'사과': 12, '바나나': 20}
b = {'사과': 3, '바나나': 6}

이 두개의 딕셔너리끼리 나눠서

{'사과': 4, '바나나': 3.33333} 

이렇게 나오게 하는 법은 없는 건가요?

2 답변

  • ~~~게 하는 법은 없는 건가요ㅜㅜ

    없어요. 질문자님이 만들어 내셔야 합니다.

    이렇게 말씀드리면 더 울고 싶어지실 거 같은데 겁낼 거 하나 없습니다. 모든 프로그래밍 문제는 결국 입력을 받아 정해진 규칙으로 가공하고 (필요 시) 출력을 제공하는 작업입니다. 그렇다면 이 문제 역시 입력, 규칙, 출력만 확실히 하면 될 문제입니다.

    이 문제의 입력, 규칙, 출력을 생각해 봅시다.

    • 입력: 2개의 딕셔너리
    • 규칙: 두 딕셔너리의 키가 같은 것들을 찾아서, 어쩌구 저쩌구... 해서 얻은 값을 다른 제3의 딕셔너리의 키의 값으로 만든다.
    • 출력: 아까 그 제3의 딕셔너리

    이 입력, 규칙, 출력을 코드로 적으세요.

    def get_division_of_matching_values(dicA, dicB) :
    
        # 제3의 딕셔너리
        dicC = {}
    
        # 규칙에 따라 제3의 딕셔너리에 뭔가 한다.
        for k in dicA :
            if dicB에 k 키가 있으면 :
                v = dicB의 k의 값으로 dicA의 k의 값을 나누기
                dicC의 k 값에 v를 할당하기
    
        # 출력한다.
        return dicC
    

    이걸 침착하게 이해하고 해내면 될 문제입니다. 울 필요 없습니다.

  • pandas Series를 이용한 방법을 참고로 달아봅니다.

    Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license()" for more information.
    >>> a = {'사과': 12, '바나나': 20}
    >>> b = {'사과': 3, '바나나': 6}
    >>> import pandas as pd
    >>> pd.Series(a)
    사과     12
    바나나    20
    dtype: int64
    >>> s_a = pd.Series(a)
    >>> s_b = pd.Series(b)
    >>> s_a
    사과     12
    바나나    20
    dtype: int64
    >>> s_b
    사과     3
    바나나    6
    dtype: int64
    >>> s_a/s_b
    사과     4.000000
    바나나    3.333333
    dtype: float64
    >>> s_c = s_a/s_b
    >>> s_c
    사과     4.000000
    바나나    3.333333
    dtype: float64
    >>> s_c.to_dict()
    {'사과': 4.0, '바나나': 3.3333333333333335}
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)