Python: оптимальный способ добавления в словарь значений списка

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

class myClass():

  def __init__(self):
    self.d = defaultdict(list)

  def addValue(self, index, value):
    self.d[index].append(value)

Действительно ли это оптимальный способ сделать это? Меня не волнует порядок значений, поэтому, возможно, есть более подходящая структура данных с более быстрым добавлением. Опять же, «добавить» не кажется основной проблемой, потому что, если я просто добавлю к пустому списку, код будет намного быстрее. Я предполагаю, что загрузка ранее сохраненного списка занимает большую часть времени?


Я обнаружил, что проблема не в словаре, а в добавлении списка (хотя я утверждал обратное в своем исходном посте, за что прошу прощения). Эта проблема возникает из-за ошибки в сборщике мусора Python, которая хорошо объяснена в этом другом вопросе. Отключение gc перед добавлением всех значений, а затем его повторное включение значительно ускоряет процесс!

5
задан Community 23 May 2017 в 12:04
поделиться