Изменение значений словаря Python

#arrays #json #python-3.x #dictionary #format

Вопрос:

В приведенном ниже коде я создаю словарь 3 раза, а затем пытаюсь изменить значение Ontrade с True на False в стратегии 2 с помощью функции изменения. Однако это работает не так, как ожидалось, и превращает все значения Ontrade в True. Как бы я мог это исправить?

 import numpy as np
import pprint 

listrange = 5
data = {}
dict_integrity = {"Array": np.array([]), "last_timestamp": 0, "last_Trades": 0, "Order_id_list": 0, "Ontrade": False, "TakeProfits": 0, "StopLoss": 0}

for x in range(listrange):
    data["Strategy "   str(x)] = dict_integrity

alteration = data["Strategy "   str(2)]["Ontrade"] = True
 

Выход:

 {'Strategy 0': {'Array': array([], dtype=float64),
                'Ontrade': True,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0},
 'Strategy 1': {'Array': array([], dtype=float64),
                'Ontrade': True,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0},
 'Strategy 2': {'Array': array([], dtype=float64),
                'Ontrade': True,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0}}
 

Ожидаемый Результат:

 {'Strategy 0': {'Array': array([], dtype=float64),
                'Ontrade': False,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0},
 'Strategy 1': {'Array': array([], dtype=float64),
                'Ontrade': False,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0},
 'Strategy 2': {'Array': array([], dtype=float64),
                'Ontrade': True,
                'Order_id_list': 0,
                'StopLoss': 0,
                'TakeProfits': 0,
                'last_Trades': 0,
                'last_timestamp': 0}}
 

Комментарии:

1. Привет @ChristopherOjo, знакомы ли вы с понятиями » передача по ссылке » и » передача по значению «?

2. Вы присваиваете словарю одно и то же значение dict_integrity три раза. Сделайте копию dict_integrity перед заданием.

3. Я не знаком с этим @cmolina, и смысл назначения dict_integrity 3 раза состоит в том, чтобы убедиться, что у всех них одинаковые переменные. Как бы я сделал его копию перед заданием? Исходя из моего понимания этих комментариев, я каким-то образом передаю ссылку на словарь 3 раза вместо того, чтобы передавать только значения словаря, что я и хочу. Как мне это исправить?