Using itertools.repeat faster. If D={'a':1,'b':2,'c':1,'d':3}, result=['a','b','b','c','d','d','d'] .
from itertools import repeat result=reduce(lambda la,lb:la+lb,[list(itertools.repeat(k,v)) for k,v in D.items()],[])
A completely understandable way
from itertools import repeat result=[] for k,v in D.items(): result+=list(repeat(k,v))
ps.
假设 你 用 的 OrderedDict. 稍微 解释 一下 第 一种 .reduce 有 三个 参数, 目标 是 把 你 字典 产生 的 list, 通过 最后 一个 初始 值 [], 来 不断 decrease 为 一个 结果 list ". 你 字典 产生 的 list" 就是 通过 items ()生成 的 (key, meaning) 这种 pair 的 list.
source share