Массив / список против словаря (почему они у нас на первом месте) - PullRequest
2 голосов
/ 23 апреля 2010

Для меня они оба одинаковы, и поэтому мне интересно, почему у нас есть словарная структура данных, когда мы можем делать все с массивами / списком? Что такого фантастического в словарях?

Ответы [ 5 ]

6 голосов
/ 23 апреля 2010

Arraylists просто хранят набор объектов (к которым можно получить произвольный доступ).Словари хранят пары объектов.Это делает массив / списки более подходящими, когда у вас есть группа объектов в наборе (простые числа, цвета, студенты и т. Д.).Словари лучше подходят для отображения отношений между парой объектов.

Зачем нам нужны словари?Допустим, у вас есть данные, которые необходимо преобразовать из одной формы в другую, например символы римских цифр, в их значения.Без словарей вам пришлось бы взламывать эту связь вместе с двумя массивами, где вы сначала находите позицию, в которой находится ключ в первом списке, и получаете доступ к этой позиции во втором.Это ужасно подвержено ошибкам и неэффективно, и словари обеспечивают более прямой подход.

6 голосов
/ 23 апреля 2010

Массивы обеспечивают произвольный доступ к последовательному набору данных. Словари (или ассоциативные массивы ) предоставляют карту от набора ключей до набора значений.

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

Большую часть времени словарный тип создается как хеш-таблица - этот тип очень полезен, поскольку он обеспечивает очень быстрые поиски в среднем (в зависимости от качества алгоритм хеширования).

0 голосов
/ 30 апреля 2019

Путаница заключается в разных соглашениях об именах на разных языках. В моем понимании то, что называется «Словарь» в Python, совпадает с «Ассоциативным массивом» в PHP.

0 голосов
/ 30 июня 2016

Теоретически вы можете делать все со словарями. Но не забывайте, что в какой-то момент программа работает на реальной машине, которая имеет ограничения из-за аппаратного обеспечения: процессор, память, характер хранилища (диск / SSD) ...

За кулисами словари часто используют Хеш-таблицу

В некоторых языках вы можете выбирать между многими различными типами списков / массивов и хеш-таблиц, поскольку существует множество различных реализаций этих структур, каждая из которых имеет свои преимущества и недостатки.

Использовать массив , когда вы работаете с последовательностью элементов или вам нужен случайный доступ к элементу по заданному индексу (0, 1, 2, ...)

Используйте словарь , когда у вас есть формат ключа / значения и вам нужен быстрый поиск по ключу

Если вы хотите больше узнать об этом, я рекомендую вам узнать больше о структурах данных , поскольку они являются фундаментальными

ПРИМЕЧАНИЕ: в зависимости от языка название этих структур может различаться и может привести к путанице.

0 голосов
/ 23 апреля 2010

Чтобы построить то, что сказал Эндрю, в некоторых языках, таких как PHP и Javascript, массив также может функционировать как словарь (известный как ассоциативные массивы). Это также сводится к потере строгой типизации на языке.

...