Когда логичнее использовать Set по сравнению с Map? - PullRequest
1 голос
/ 27 февраля 2020

Например, у меня есть куча объектов, скажем, Автомобили. Мне нужно следить за парком машин в компании. Очевидно, что автомобили уникальны (номер VIN), поэтому их можно объединить в набор.

Но мне нужно каждый день менять состояние некоторых машин в автопарке, скажем, заполнять их бензином.

Какая конструкция сейчас имеет смысл? Почему?

  1. Словарь с номером VIN в качестве ключа и экземпляром Car в качестве значения.
  2. A Набор автомобилей, которые затем совпадают в атрибуте Car.vin.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

из того, что я вижу, хранение данных в словаре является более подходящим подходом

, если вам нужно изменить состояние ваших объектов Car, это означает, что вы должны искать эту машину (с помощью VIN number) а диктов может выполнить эту работу за O (1) сложность времени, я не вижу, как вы можете VIN number искать объект Car в наборе (вы не можете)

1 голос
/ 27 февраля 2020

Помните, что вещи, которые как наборы, так и карты / дикты работают с использованием хэшей. Хэшированные элементы должны быть неизменяемыми и желательно небольшими (более быстрый расчет sh).

В вашем случае мы не знаем, что находится в экземпляре автомобиля и изменяется ли он. Может быть, вы можете заменить некоторые детали или сменить владельца? Если они хранятся внутри экземпляра, автомобиль должен быть изменчивым.

Таким образом, очевидным выбором для ha sh будет go для короткого номера VIN, который не изменяется. -> Вы должны использовать карту (dict).

+ В Python классы по умолчанию являются изменяемыми, поэтому проще использовать какой-либо (альфа) числовой идентификатор или пару (кортеж) таких элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...