Создание словаря в python по условию

Я хочу получить словарь из доступного числового списка, разделенного на цифры и их количество в строке.

Мои входы:

num_list = list('181986336314')

Мне нужно получить такой словарь:

mydict = {1: 111, 2: None, 3: 333, 4: 4, 5: None, 6: 66, 7: None, 8: 88, 9: 9}

Какой вывод вам нужен?

codester_09 17.12.2022 14:08

«Я получил выражение с числом», какое выражение вашего вопроса является неполным, обновил вопрос с правильными деталями.

deadshot 17.12.2022 14:17

Это: dict = {1: 111, 2: нет, 3: 333, 4: 4, 5: нет, 6: 66, 7: нет, 8: 88, 9: 9}

Сергей 17.12.2022 14:17

не используйте dict в качестве имени переменной

deadshot 17.12.2022 14:19

Счетчик подсчитывает количество раз появления символа. В вашем примере «1» появляется 3 раза, а не 111 раз, а ключ «1», а не 1, если, конечно, так как вы работаете со строкой, а не с целым числом. Однако теперь вы можете преобразовать ключи и значения в то, что хотите.

Malcolm 17.12.2022 14:21

Наличие пустой строки вместо None для пропущенных цифр имело бы больше смысла. Таким образом, значения будут иметь согласованный тип.

John Coleman 17.12.2022 14:22

В том-то и дело: 111 — это три единицы.

Сергей 17.12.2022 14:24
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
7
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из способов сделать это - опубликовать результат вашего счетчика.

counter = Counter(num_list)
my_dict = {}
for i in range(1, 10):
    if (str(i) in counter.keys()):
        my_dict[i] = int(str(i) * counter[str(i)])
    else:
        my_dict[i] = None
    
print(my_dict)
> {1: 111, 2: None, 3: 333, 4: 4, 5: None, 6: 66, 7: None, 8: 88, 9: 9}

Вы можете сохранить строку цифр в виде строки и использовать понимание словаря:

from collections import Counter
s = '181986336314'
c = Counter(s)
d = {digit:digit*c[digit] for digit in '0123456789'}

Результирующий словарь:

{'0': '', '1': '111', '2': '', '3': '333', '4': '4', '5': '', '6': '66', '7': '', '8': '88', '9': '9'}

В этом подходе я использовал '' вместо None, поскольку таким образом значения имеют согласованный тип. Кроме того, все они имеют одно и то же значение: строка заданной длины, состоящая из заданной цифры.

Другие вопросы по теме