LINUX.ORG.RU

Как в питоне словарь внутри себя использовать

 


0

1

Чего-то не понял в нем.

list=['a','a','a','b','c','c','c','c']
s = {i: s[i]+1 for i in list}
print(s)

Хотелось бы увидеть вывод вроде 'a':3, 'b':1, 'c':4 но возникает ошибка «NameError: name 's' is not defined» Если же просто присваивать допустим 1 каждому ключу, то нормально, но мне не это нужно.

★★★★★

Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от anonymous-angler

Ну тогда уж:

>>> reduce(lambda d, i: {**d, i: d.get(i, 0) + 1}, 'aaaabababaccacac', {})
{'a': 9, 'b': 3, 'c': 4}
rtxtxtrx ★★★
()
Ответ на: комментарий от qulinxao3

но тут все эти варианты были даже с черной магией

rtxtxtrx ★★★
()
Ответ на: комментарий от praseodim

Читай официальную документацию: https://docs.python.org/3/tutorial/index.html

Остальные источники, включая книги - это часто устаревшая, не всегда качественная, а порой откровенно безобразная, перепечатка или адаптация официальной документации. Не трать время на другие источники. Официальный туториал - единственное, что тебе нужно на данном этапе.

В туториале основные синтаксические моменты рассмотрены всего на семи страницах (разделы 3-9), которые реально осилить за день-два, в зависимости от имеющегося опыта программирования.

anonymous
()
Ответ на: комментарий от ei-grad

Версия от ChatGPT:

reduce(lambda count, element: count.update({element: count.get(element, 0) + 1}) or count, l, {})
ei-grad ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.