파이썬 딕셔너리 key, value 값 얻기 질문있습니다.

조회수 995회
input_value =  {AAA': {'aaa1': ['a1', 'b1', 'c1'], 'aaa2': ['a2', 'b2', 'c2']}, 'BBB': {'bbb1': ['b1','b2']}}

target1 = input_value.keys()
# dict_keys(['AAA', 'BBB'])

target2 = input_value.values()
# dict_values([{'aaa1': ['a1', 'b1', 'c1'], 'aaa2': ['a2', 'b2', 'c2']}, {'bbb1': ['b1', 'B2']}])

## 원하는 결과.
## result = {'AAA':['aaa1','aaa2']}

키 AAA의 values의 중간 키 값인 aaa1, aaa2 만 뽑아 오고 싶은데, (위에 result 처럼) 방법이 있을까요?
제가 시도한 방법은 target2에서 key 값 뽑아서(aaa1,aaa2) 이 값을 value로 바꾸려하는데, target2 값이 dict_values 값이기 떄문에 key로 쓸수 없다고 나와 key선정을 하지 못했습니다.
도움을 주시면 감사하겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • //여기에 코드를 입력하세요
    input_value =  {'AAA': {'aaa1': ['a1', 'b1', 'c1'], 'aaa2': ['a2', 'b2', 'c2']}, 'BBB': {'bbb1': ['b1','b2']}}
    
    // 상위 키들을 리스트로 생성
    key_list = list(input_value.keys())
    
    result = dict()
    for i in range(len(key_list)):
        value = input_value.get(key_list[i])    // 상위 키의 value 얻기
        second_key_list = list(value.keys()) // 하위 키들을 리스트로 생성
        result[key_list[i]] = second_key_list // 결과 dict 형태로 생성
    
    print('result : ', result)
    

    직관적으로 코드를 생성한 것이니 의도에 맞게 생각해서 수정 하시기 바래요

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • >>> o, *_ = input_value.items()    # 관심있는 것은 제일 첫 요소 o = input_value.get(0) 해도 됩니다.
    >>> {o[0]:list(o[1].keys())}    # o는 튜플이고 key, value 순이다.
    {'AAA': ['aaa1', 'aaa2']}
    
    • 답변 감사합니다! 알 수 없는 사용자 2019.9.27 15:47
    • 아..한가지 주의할 것은 python 3.6 이상부터 dict 순서가 보장됩니다. 정영훈 2019.9.27 16:04

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

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

(ಠ_ಠ)
(ಠ‿ಠ)