Переменные в python являются ссылками на объекты.
Когда вы передаете параметр, у вас есть две переменные, указывающие на один и тот же объект, одна внутри функции и одна снаружи.
order_dict [ new_key] = ["new", "list"] изменяет существующий объект OrderedDict. Таким образом, изменение видно за пределами функции.
order_dict = OrderedDict (sorted (order_dict.items ())), с другой стороны, создает новый OrderedDict и изменяет переменную order_dict в функции, чтобы вызывать ее, она имеет не влияет на переменную order_dict в основной программе.
Если вы можете использовать внешние библиотеки, вы можете захотеть взглянуть на модуль sortedcontainers.
Есть ли способ действовать непосредственно на переданную переменную
Не очень хорошая. Существует функция «перейти в конец», которую можно использовать, но она может привести к целому ряду необоснованных перемещений.
Я подозреваю, что наименее плохой способ сортировки OrderedDict на месте - это очистить и пополните его, что-то вроде.
tmp = sorted(ordered_dict.items())
ordered_dict.clear()
ordered_dict.update(tmp)
Ultimatley, хотя, делать полный курорт на каждой вставке, вероятно, плохой дизайн. Правильно отсортированный контейнер, вероятно, будет работать намного лучше, если он доступен.