#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 раза вместо того, чтобы передавать только значения словаря, что я и хочу. Как мне это исправить?