Изменение пары в словаре через функцию
Нужно изменить пару в словаре (ключ, значение) на новые, используя функцию. Я так понял, что готового метода не существует, а ключ вообще менять нельзя.
Попробовал так:
d = {'a': 'hello', 'b': 'world'}
def change_d(par):
del d[par]
new_k = input("new key")
new_v = input("new value")
new_par = {new_k: new_v}
d.update(new_par)
change_d("b")
print(d)
Проблема в том, что новая пара добавляется в конец, а нужно чтобы она была на том месте, где находилась предыдущая.
Ответы (1 шт):
Это сделать невозможно используя быстрый алгоритм, так как при добавлении объектов в словарь индекс ему дается автоматически и логично что менять его нельзя, иначе это ухудшит оптимизацию и приведет к образованию коллизий. Да и вообще то что вы видите при print(d) это не их позиции! Потому что объекты в ней не упорядочены. Так что получается что по сути не имеет смысла менять их местами (поэтому и не предусмотрена, например возможность сортировать объекты в ней, как в списках).
Единственный способ это пересоздавать эти словари и добавлять объекты в нужном вам порядке, но при большом объеме это может занять очень много времени. Или если уж сильно важен визуал и чтобы объекты "находились" именно там где вам нравятся, то словарь можно преобразовать в список, удалять объект .remove(index) и заново добавлять его .insert(index) под указанный индекс.
Надеюсь смог помочь)