간단한 파이썬 알고리즘문제 부탁드립니다!
조회수 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)
댓글 입력