How to convert a dictionary to a list of keys, with repeat counts given by the values?

前端 未结 5 517
醉梦人生
醉梦人生 2020-12-10 09:47

I need your help to solve a problem.

I want to convert a dictionary d = {key1:value1, key2:value2} into list= [keys1, keys1, ... (value1 times), k

5条回答
  •  感情败类
    2020-12-10 10:15

    You can use a comprehension like below:

    list(chain.from_iterable(map(int, ((str(k) + ',') * v).split(',')[:-1]) for k, v in d1.items()))
    

    Code:

    from itertools import chain
    
    d1 = {4: 1, 3: 2, 12: 2}
    
    print(list(chain.from_iterable(map(int, ((str(k) + ',') * v).split(',')[:-1]) for k, v in d1.items())))
    # [4, 3, 3, 12, 12]
    

    To avoid all those fancy splits and map, you can go for:

    [k for k, v in d1.items() for _ in range(v)]
    

    which also outputs the desired output.

提交回复
热议问题