例如,如果我有这个字典:{1:2,2:3},我想获取此列表: [1,1,2,2,2]
答案 0 :(得分:3)
您可以例如对相应的值使用range
的嵌套列表推导:
>>> d = {1: 2, 2: 3}
>>> [k for k in d for _ in range(d[k])]
[1, 1, 2, 2, 2]
答案 1 :(得分:3)
您可以创建一个Counter
object,然后使用.elements()
方法来获取一个可迭代的对象,并将其转换为列表:
from collections import Counter
list(Counter({1:2,2:3}).elements())
#[1, 1, 2, 2, 2]
这还使您可以使用您可能感兴趣的其他方法。例如.most_common
通常很方便。
答案 2 :(得分:2)
from itertools import chain
print(list(chain.from_iterable([[k] * v for k, v in {1:2,2:3}.items()])))
这将输出:
[1, 1, 2, 2, 2]
答案 3 :(得分:2)
使用chain
中的repeat
,starmap
和itertools
:
from itertools import chain, repeat, starmap
d = {1:2,2:3}
res = chain.from_iterable(starmap(repeat, d.items()))
print(list(res))
[1, 1, 2, 2, 2]
答案 4 :(得分:0)
list_of_values = list()
for key, val in d.items():
list_of_values.extend([key] * val)
print(list_of_values)
此打印:
[1, 1, 2, 2, 2]