Какой самый быстрый способ создания копии словаря без специальных (под) ключей? [закрыто]

Сначала стало полезно различать различные типы IP vpn на основе административных отношений, а не технологии, соединяющих узлы. Как только отношения будут определены, в зависимости от требований, таких как безопасность и качество обслуживания, могут использоваться различные технологии.

-2
задан Georgy 18 January 2019 в 14:55
поделиться

2 ответа

Прежде всего, я бы нигде не использовал s2. Потому что это трудно читать. Код Python должен быть читабельным.

И когда дело доходит до s1 и s, они как бы разные. copy Функция использует ту же ссылку на объект со значениями вашего исходного объекта. Поэтому после применения решения s, если вы внесете изменения в словари в users, вы увидите свои изменения в s. Но если вы используете s1, потому что новые объекты создаются, изменения не произойдут в s1.

0
ответ дан nejdetckenobi 18 January 2019 в 14:55
поделиться
  • Первый подход даже не жизнеспособен - он разрушителен для исходных данных. Вы делаете копию, а не глубокую копию, а это означает, что for k,v in obj.items(): v.pop('args', None) будет мутировать субдикты в исходной структуре.
  • Второй подход (на мой взгляд) семантически неверен - вы не «создаете без определенного ключа», вы создаете новый «на основе определенного ключа». Это совсем другое, и это не технический вопрос, это вопрос бизнес-логики.
  • Третий - единственный, который соответствует тому, чего вы пытаетесь достичь, и это довольно идиоматичный способ сделать это в python.

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

  • деструктивный подход самый быстрый
  • 1-й сближение с deepcopy на величину медленнее 3-го
  • 2-е в ~ 2 раза быстрее 3-го
0
ответ дан Slam 18 January 2019 в 14:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: