Python

Вопрос по теории Python(и любой другой язык)

Объясните в чем разница словаря и списка, точнее разницу я понимаю, но какой смысл и где использовать словарь вместо списка не понимаю
Vitaliy Kuznetsov
Vitaliy Kuznetsov
107
То, что в Python называют "списком" (list) в нормальных языках программирования называется "массив" (линейный массив, array). Это набор ячеек, индексируемый непрерывным диапазоном значений дискретного типа. Набор упорядочен по значениям индекса. В Python индексы всегда целочисленны и всегда начинаются с 0.

То, что в Python называют "словарём" (dict), обозначается стандартным русским термином "ассоциативный массив" (в разных языках: хэш, hash, map). Это набор ячеек, индексируемых произвольными значениями (никаких непрерывных диапазонов) допустимых типов. В Python допустимыми типами индекса являются целые числа, строки, логические значения, кортежи (tuple), константные множества (frozenset). В общем случае ассоциативный массив не упорядочен - ключи при обходе массива идут в произвольном порядке (вроде бы, в последних версиях Python ключи упорядочены в порядке их добавления в массив).

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

P.S. Автор Python сознательно положил болт на общепринятую программистскую терминологию, что создаёт проблемы. В нормальном программировании тот же "список" обозначает совершенно иной тип данных.
МН
Михаил Новоселов
75 719
Лучший ответ
Александр Сальников А на Python, по вашему, это ненормальное программирование? Просто другое.
Поиск значения по заранее заданному ключу в Питоне практически мгновенный, намного быстрее чем поиск в обычном списке. Но в программировании не бывает такого что "одно однозначно лучше, другое однозначно хуже". Всё зависит от конретной ситуации. И используется то что больше подходит в каких-то определенных условиях
Ярослав Мудрый
Ярослав Мудрый
96 045
Там, где индексов тебе недостаточно.

Например если ты хочешь получать элементы по строке вместо индексов.
Где можешь, лучше ограничивайся списками. Словари может и кажутся быстрыми, но на деле точно медленнее будут
Егор Медведев
Егор Медведев
34 940