Создайте список из ключей в словаре с учетом их соответствующего значения - PullRequest
0 голосов
/ 05 июля 2018

Например, если у меня есть этот словарь: {1: 2,2: 3}, я бы хотел получить этот список: [1,1,2,2,2]

Ответы [ 5 ]

0 голосов
/ 05 июля 2018

Использование 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]
0 голосов
/ 05 июля 2018

Вы можете создать Counter объект , а затем использовать метод .elements(), чтобы получить итерацию, которую можно преобразовать в список:

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

Это позволяет вам также использовать другие методы, которые могут вас заинтересовать. Например, .most_common часто удобно.

0 голосов
/ 05 июля 2018

Вы можете, например, используйте понимание вложенного списка с range над соответствующим значением:

>>> d = {1: 2, 2: 3}
>>> [k for k in d for _ in range(d[k])]
[1, 1, 2, 2, 2]
0 голосов
/ 05 июля 2018
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]
0 голосов
/ 05 июля 2018
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]
...