Почему dict имеет худший случай O (n) для такого количества операций?

Как именно реализован dict, который имеет линейный поиск по времени для коллизий? Я бы предположил, что он реализован в виде хеш-таблицы, поддерживаемой списком. Я бы предположил, что лучшая реализация была бы O (log (n)) для различных операций, используя вместо этого дерево для поддержки таблицы. Есть ли какая-то магия за кулисами, чтобы как можно дольше поддерживать постоянные поисковые запросы?

Мой источник, кстати, таков: def swap_columns (my_array, col1, col2): temp = my_array [:, col1] my_array [:, col1] = my_array [:, col2] my_array [:, col2] = temp Затем swap_columns (data, 0, 1) Нет ' т ...

from numpy import *
def swap_columns(my_array, col1, col2):
    temp = my_array[:,col1]
    my_array[:,col1] = my_array[:,col2]
    my_array[:,col2] = temp

Тогда

swap_columns(data, 0, 1)

Не работает. Однако прямой вызов кода

temp = my_array[:,0]
my_array[:,0] = my_array[:,1]
my_array[:,1] = temp

делает. Почему это происходит и как это исправить? Ошибка говорит: «IndexError: массивы 0-d могут использовать только один () или список новых осей (и один ...) в качестве индекса», что означает, что аргументы не являются целыми числами? Я уже пытался преобразовать столбцы в int, но это не помогло.

48
задан audacious ainsley 31 January 2011 в 15:10
поделиться