2017-02-08 9 views
0

Итак, я только что узнал о реализации python хэш-таблицы, которая является словарем.Выполнение Javascript для Python Dictionary

Так вот что я понимаю, до сих пор, пожалуйста, поправьте меня, если я ошибаюсь:

  1. Словарь в основном структурированных данных, содержащий пары ключ-значение.
  2. Когда мы хотим найти ключ, мы можем напрямую вызвать dict [key]. Это возможно, потому что python выполняет определенную хэш-функцию на ключе. Хэш-результат - это индекс значения в словаре. Таким образом, мы можем получить значение непосредственно после выполнения хеш-функции, а не итерации по списку.
  3. Python обновит хэш-таблицу, увеличив количество «ведер», когда хеш-таблица будет заполнена на 2/3 ее максимального размера.
  4. Python всегда гарантирует, что у каждого «ведра» будет только 1 запись в нем, чтобы производительность при поиске была оптимальной, итераций не требовалось.

Мой первый вопрос: правильно ли я понимаю словарь python?

Во-вторых, имеет ли объект javascript также все эти 4 функции? Если нет, существует ли еще одна встроенная реализация javascript словаря/хеш-таблицы вообще?

+0

Не злоупотребляйте объектами JavaScript как dicts - см. Более подходящую ['Map'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) и [ 'WeakMap'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) – naomik

ответ

0

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

  • Прототип объекта потенциально может привести ключевые столкновения
  • ключи объектов могут быть строками или символы. Ключами карты могут быть любые значения.
  • Нет прямых средств определения количества записей «карты», которые имеет объект, а Map.prototype.size сообщает вам, сколько записей у него есть.

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