본문 바로가기

파이썬3

리스트 2개를 묶어서 정리해주는 기능

728x90
반응형

1. 개요

a와 b라는 2개의 리스트를 딕셔너리로 만드는 기능은 간단하다

dict(zip(a,b))

 

이렇게 하면 a는 key가 되고 b는 value가 된다.

 

그런데, 이것은 적어도 a의 경우 중복이 없는 경우에만 가능하다.

중복과 상관없이 묶어주는 기능을 그래서 따로 만들었다.

 

2. 기능

import numpy as np
def grouper(a,b,progress_bar=True):
    '''
    a를 기준으로 b 리스트를 묶어줌.
    a = ['a', 'a', 'c', 'd']
    b = [1, 2, 2, 3]
    a와 b의 길이는 같아야함.
    결과물은
    {'a':[1,2], 'c':[2], 'd':[3]}
    '''
    n=0
    total_n=len(b)
    progress=np.array([i for i in range(101)])
    c={}
    for key,value in zip(a,b):
        if key in c:
            c[key].append(value)
        else:
            c[key]=[value]
        if progress_bar:
            n+=1
            if n/total_n*100 > progress[0]:
                status=n/total_n*100
                print(f'{status:.1f}%')
                progress=progress[np.where(progress>(n/total_n*100))]
    return c


grouper(a=['a', 'a', 'c', 'd','b'],b=[1, 2, 2, 3,1])
728x90
반응형