копирование словаря против добавления элемента для восстановления словаря - PullRequest
0 голосов
/ 06 августа 2020

В python мне нужно восстановить словарь из существующего словаря. Количество элементов словаря примерно 5. Я могу создать новый словарь с пятью элементами или скопировать существующий словарь.

Какой метод быстрее между копированием и созданием нового?

(Мне нужно вставить это для l oop, так что в конце может быть большая разница.)

Пример кода:

orig = {'pid': 12345, 'name': 'steven king', 'country': 'usa', 'sex': 'M', 'company': 'MS'}

for _ in range(5000):

    copy1 = orig.copy()

    newone = {}
    newone['pid'] = 12345
    newone['name'] = 'steven king', 
    newone['country']= 'usa' 
    newone['sex'] = 'M'
    newone['company] = 'MS'

1 Ответ

1 голос
/ 06 августа 2020

Есть еще один способ использования argument unpacking

newone = {**orig}

Который вы также можете добавить новые переменные в эту строку:

newone = {**orig, 'newval': 'test'}

Но из моих простых тестов copy способ кажется самым быстрым:

from timeit import timeit

orig = {'pid': 12345, 'name': 'steven king', 'country': 'usa', 'sex': 'M', 'company': 'MS'}

def f1():
  newone = orig.copy()
  newone['newval'] = 'test'

def f2():
  newone = {}
  newone['pid'] = 12345
  newone['name'] = 'steven king', 
  newone['country']= 'usa' 
  newone['sex'] = 'M'
  newone['company'] = 'MS'
  newone['newval'] = 'test'

def f3():
  newone = {**orig, 'newval': 'test'}


print(timeit(f1))
print(timeit(f2))
print(timeit(f3))

Результаты:

1.4525865920004435
1.858240751986159
1.4954008519998752

Попробуйте здесь: https://repl.it/repls/NeglectedOrneryBash

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