Python 根据字典中的键的对应值创建一个列表

Python 根据字典中的键的对应值创建一个列表,python,python-3.x,list,dictionary,counter,Python,Python 3.x,List,Dictionary,Counter,例如,如果我有以下词典:{1:2,2:3},我希望获得以下列表: [1,1,2,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] 例如,您可以使用嵌套列表理解,在相应的值上有一个范围: >>> d = {1: 2, 2: 3} >>> [k for k

例如,如果我有以下词典:{1:2,2:3},我希望获得以下列表: [1,1,2,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]

例如,您可以使用嵌套列表理解,在相应的值上有一个
范围

>>> d = {1: 2, 2: 3}
>>> [k for k in d for _ in range(d[k])]
[1, 1, 2, 2, 2]
这张照片是:

[1, 1, 2, 2, 2]
您可以创建一个表,然后使用
.elements()
方法获取一个可转换为列表的iterable:

from collections import Counter
list(Counter({1:2,2:3}).elements())
#[1, 1, 2, 2, 2]

这也允许您使用您可能感兴趣的其他方法。例如,
。最常见的
通常很方便。

使用
重复
星图
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]

好啊你试过什么?你不是指“价值”,而是指“计数”或“多重性”。因此,您的字典不是真正的字典,而是计数器。很好,甚至不知道此函数。是否需要创建所有内部列表?如果使用此方法,则是必需的。但是还有很多其他方法不需要创建内部列表,如其他答案所示。只是一个简单的问题。为什么要写第三行代码([key]*val),如果我写(list(key)*val),为什么它不起作用?为了使用类型构造函数创建列表,可以执行
list()
list([iterable])
在您的例子中,key'是一个整数,它会产生一个错误。您也可以查看以获得详细的解释。
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]