我有一个奇怪的问题,因为我试图生成一个字典列表,将它们作为参数传递给函数。 “手动”设计输入看起来像这样:
params = [
# Amazon
{
'q': "AMZN",
'x': "NASDAQ",
},
{
'q': "PIH",
'x': "NASDAQ",
},
{
'q': "AIR",
'x': "NYSE",
},
{
'q': "FCO",
'x': "NYSEAMERICAN",
},
{
'q': "7201",
'x': "TYO",
}
].
我尝试使用以下代码从包含代码列表(每行一个)的txt文件生成类似的词典列表:
info = {}
params = []
with open('Test_Tickers.txt') as f:
for line in f:
info['q'] = line.rstrip()
info['x'] = "NYSE"
params.append(info)
print(info)
令人沮丧的是,print(info)返回正确的词典
{'q': 'ABB', 'x': 'NYSE'}
{'q': 'ABBV', 'x': 'NYSE'}
{'q': 'ABC', 'x': 'NYSE'}
{'q': 'ABEV', 'x': 'NYSE'}
...
{'q': 'IJS', 'x': 'NYSE'}
params看起来像这样:
[{'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, {'q': 'IJS', 'x': 'NYSE'}, ... ]
如何更正代码,以便字典包含所有代码而不仅仅是最后一个代码?
答案 0 :(得分:1)
params = []
with open('Test_Tickers.txt') as f:
for line in f:
info = {}
info['q'] = line.rstrip()
info['x'] = "NYSE"
params.append(info)
print(info)
我会工作
你只更新列表中的一个dict对象,
要制作多个对象,你必须在循环中定义info = {}