Python изменить существующий дикт, аналогично назначению фрагментов спискам? - PullRequest
3 голосов
/ 06 апреля 2020

Это казалось очень простым вопросом, но поиски в Google не показывали мне много, потому что я не уверен в правильности используемой здесь терминологии.

Рассмотрим следующий фрагмент списка

l1 = [5]

def change_global():
    l1[:] = [1, 2, 3, 4]

if __name__ == '__main__':
    change_global()
    print(l1) # [1, 2, 3, 4]

Я успешно сумел назначить и изменить глобальный список с помощью записи срезов.

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

global_dict.clear()
global_dict.update(new_dict)

Но есть ли один вкладыш, аналогичный примеру списка?

РЕДАКТИРОВАТЬ:

После просмотра на комментарий Я попробовал следующее

d1 = {}

def change_global():
    d1 = {'a': 1, 'b': 2}

Это не изменит d1, если я не использую ключевое слово global, и все же запись среза работает для примера списка. Так что это определенно означает, что обозначение среза здесь особенное.

...