导入的变量更新未反映在父模块中
Posted
技术标签:
【中文标题】导入的变量更新未反映在父模块中【英文标题】:imported variable update is not reflecting in the parent module 【发布时间】:2020-12-26 12:42:13 【问题描述】:我有两个模块,主要和更新。
在 main 中,我声明了一个引用字典和每个值的列表。在更新中我更新了年龄,但我没有看到更新再次反映在主模块中。
main module
candidates = 'goutham': 'Age': 30, 'teja':'Age': 27
for s in candidates:
portfolio[s] = [0,0] # some value which i use for other calculations
update module
from main import *
portfolio['goutham'][0] = 32
现在当我回到主页面并打印投资组合['goutham']。它仍然将值显示为 [0,0]
【问题讨论】:
你想要什么样的数据结构?candidates
是字典,portfolio
应该有什么作为键?然后,您将[0, 0]
分配给portfolio
中的一个条目,但稍后您只分配了一个标量32
。首先决定你的数据结构。您的代码可能不起作用,因为投资组合的键是 candidates
字典条目,而稍后您尝试通过简单的字符串 goutham
访问 portfolio
。
你执行的是哪个脚本?
@Maciek - 我实际上已经以一种很小的方式表达了我的问题。我的程序的实际目的是用于算法交易,我有一个名为 trd_portfolio 的股票列表,这是一个包含任何特定股票详细信息的字典字典。然后我有某些数据框,例如 Profit_calculation、ohlc 等。但是为了使用我获得的股票报价数据来获得这些数据框,我创建了每个表的列表,其中包含初始字典中的各个值作为键。简而言之,对于字典中的每个条目,都会有一个列表,在特定条件下,该列表将添加到 Datafra
好吧,无论如何,看看我的回答,它实际上修改了数据(这是你原来的问题)。
【参考方案1】:
例如当您运行我添加的run.py
时,这应该可以打印'goutham': [32, 0], 'teja': [0, 0]
:
main.py
candidates = 'goutham': 'Age': 30, 'teja':'Age': 27
portfolio = candidate:[0, 0] for candidate in candidates.keys()
update.py
from main import *
portfolio['goutham'][0] = 32
运行.py
import update
from main import *
print(portfolio)
作为旁注:现在您的模块中有在导入模块时正在执行的模块。如果这是您的主要逻辑,请考虑将其放入某个 main()
函数中,而不是依赖于导入时的隐式执行。
【讨论】:
以上是关于导入的变量更新未反映在父模块中的主要内容,如果未能解决你的问题,请参考以下文章
NSMutableDictionary 中的更改未反映在父 NSDictionary 中