在非接触式数组中复制的数据

2024-09-30 14:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

使用包含字典的数组时遇到问题。我将代码尽可能地小,以便更容易地看到问题,但我使用的是更大的数组

我只想使用数组的两个副本进行操作,并根据需要更改它们的值,对于数组的不同副本,每个值都可能不同。因此,我使用其中一个副本进行操作,但我不明白为什么要将操作也复制到阵列的另一个副本中

守则:

#set of data
value_indicador = [{'value': 98.0}]
value_indicador_positivo = value_indicador
value_indicador_negativo = value_indicador

for x in range(0, len(value_indicador_negativo)):

    value_indicador_negativo[x]['value'] = value_indicador_negativo[x]['value']*0.95

#what I'd like to get
value_indicador = [{'value': 98.0}]
value_indicador_positivo = [{'value': 98.0}]
value_indicador_negativo = [{'value': 93.1}]

#what I'm actually getting
value_indicador = [{'value': 93.1}]
value_indicador_positivo = [{'value': 93.1}]
value_indicador_negativo = [{'value': 93.1}]

Tags: of代码fordata字典value副本数组
1条回答
网友
1楼 · 发布于 2024-09-30 14:19:12

您没有创建dict的副本,只是对同一个dict的另一个引用。 要真正复制它,您只需执行以下操作:

dict_a = {'value': 98.0}
dict_b = dict_a.copy()

至于名单:

list_a = ['value', 98.0]
list_b = list_a[:]  # This is called slicing, you simply take all the content from the other list

因此,您的示例需要如下所示:

value_indicador = [{'value': 98.0}]
value_indicador_positivo = value_indicador
value_indicador_negativo = [d.copy() for d in value_indicador]

相关问题 更多 >