간단한 파이썬 알고리즘문제 부탁드립니다!

조회수 729회

list = [{'id':'hello'','name':'kim','address':'seoul'},{'id:'hello','name':'choi','address':'busan'}]

이렇게 리스트안에 딕셔너리가 있을경우 id값이 같을경우 네임과 어드레스를 합치고 싶습니다 즉,

list = [{'id':'hello'','name':['kim','choi'],'address':['seoul','busan']}] 이렇게 만들고싶은데 어떻게하면 될까요?

1 답변

  • lst = [
        {'id':'hello','name':'kim','address':'seoul'},
        {'id':'hello','name':'choi','address':'busan'},
        {'id':'hey','name':'demi','address':'seoul'}
    ]
    
    # 1. id를 key로하여, 새로운 dictionary 를 만듦. key가 같은 원소의 name과 address를 한 리스트안에 넣어줌.
    def merge(lst):
        answer = {}
        for i in lst:
            id = i['id']
            name = i['name']
            address = i['address']
    
            val = answer.get(id, {'name': [], 'address': []})
            val['name'].append(name)
            val['address'].append(address)
            answer[id] = val
        return answer
    
    # 2. (1)에서 만든 dictionary를 list로 변환
    def dict_to_list(lst):
        answer = [ {'id': key, **val} for key, value in lst.items()  ]
        return answer
    
    merged_lst = merge(lst)
    print(merged_lst)
    
    result = dict_to_list(merged_lst)
    print(result)
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)