Мне они оба одинаковы, и именно поэтому мне интересно, почему у нас есть структура данных словаря, когда мы можем делать все с помощью массивов/списка? Что такое фантазия в словарях?Array/list vs Dictionary (почему у нас есть их на первом месте)
ответ
Массивы обеспечивают произвольный доступ к последовательному набору данных. Словари (или ассоциативные массивы) предоставляют карту из набора ключей в набор значений.
Я считаю, что вы сравниваете яблоки и апельсины - они служат двум совершенно различным целям и являются полезными структурами данных.
Большую часть времени словарь-подобный тип построен как hash table - этот тип очень полезен, поскольку он обеспечивает очень быстрый поиск в среднем (в зависимости от качества алгоритма хеширования).
Чтобы основываться на том, что сказал Андрей, на некоторых языках, таких как PHP и Javascript, массив также может функционировать как словарь (известный как ассоциативные массивы). Это также сводится к свободному v строгому печатанию на языке.
Arraylists просто хранят набор объектов (к которым можно получить случайный доступ). Словари хранят пары объектов. Это делает массивы/списки более подходящими, когда у вас есть группа объектов в наборе (простые числа, цвета, студенты и т. Д.). Словари лучше подходят для отображения отношений между двумя объектами.
Зачем нам нужны словари? скажем, у вас есть некоторые данные, которые вам нужно преобразовать из одной формы в другую, например, римские цифры в их значения. Без словарей вам придется взломать эту ассоциацию вместе с двумя массивами, где вы сначала найдете позицию, которая находится в первом списке, и получите доступ к этой позиции во второй. Это ужасно ошибочно и неэффективно, а словари обеспечивают более прямой подход.
, так что это похоже на то, чтобы сделать вещи более «причудливыми»? – itsaboutcode
, если вы определяете фантазию как «более простой, надежный, понятный и работающий», да: D –
Пример, который вы указали, может быть реализован массивом n * 2? infect to me dictionary - это массив n * 2. Моя интерпретация верна? – itsaboutcode
Вы могли бы теоретически делать все со словарями. Но не забывайте, что в какой-то момент программа работает на реальной машине, которая имеет ограничения из-за аппаратного обеспечения: процессор, память, характер хранилища (диск/SSD) ...
За кулисами словари часто используя Hash table
На некоторых языках вы можете выбирать между различными типами таблиц list/array и hash, поскольку существует множество различных реализаций этих структур, каждый из которых имеет преимущества и недостатки.
Используйте массив при работе с последовательностью элементов или нужно случайным образом доступ к элементу по данному индексу (0, 1, 2, ...)
Используйте словарь, когда вам имеет формат ключ/значение и необходимость быстрого извлечения с помощью ключа
Если вы хотите больше узнать о них я рекомендую вам узнать больше о data structures, поскольку они являются основными
Примечание: в зависимости от языка названия этих структур может варьироваться и является источником путаницы.
«В зависимости от языка название этих структур может меняться и является источником путаницы». Да ..... это делает wikipedia менее полезным, когда все переопределяют определения с любой структурой данных, которую они хотят – YetAnotherRandomUser
@DanWhaley wikipedia страдает от той же проблемы –
его отображение 1: 1? – itsaboutcode
@itsaboutcode да, хотя значение, доступное по ключу, может быть массивом/списком большего числа значений. –
Словарь очень похож на массив. В то время как массив отображает индекс в значение, словарь отображает ключ к значению. –