根据字典中的键值创建一个列表,并考虑它们的对应值

时间:2018-07-04 22:05:00

标签: python python-3.x list dictionary counter

例如,如果我有这个字典:{1:2,2:3},我想获取此列表: [1,1,2,2,2]

5 个答案:

答案 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中的repeatstarmapitertools

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]