python list.append拧上字典条目(只在每个索引中添加最后一个条目)
问题描述:
我有这段代码,单独字典看起来不错,如何添加到列表后,列表只显示最后一个条目python list.append拧上字典条目(只在每个索引中添加最后一个条目)
def readExcel(fInputFile="", sheetname=""):
mywb = xlrd.open_workbook(vInputFile, on_demand=True)
sheet_names = mywb.sheet_names()
mysheet = mywb.sheet_by_name(sheet_names[0])
for row_idx in range(1,mysheet.nrows):
for col_idx in range(mysheet.ncols):
cell = mysheet.cell(row_idx,col_idx)
hdr = mysheet.cell(0,col_idx)
init_list(myl,str(hdr.value),str(cell.value))
if testmethod==NOLOAD:
mpt_noload_execute(myl)
else:
myll.append(myl)
print("myll after each row", myll[row_idx-1]['uname'])
for j in range(len(myll)):
print("myll after file reading", myll[j]['uname'])
==============================
执行和结果:
>python mpt_login_test_driver.py
('myll after each row', 'autotest01')
('myll after each row', 'autotest02')
('myll after each row', 'autotest03')
('myll after file reading', 'autotest03') <=== error
('myll after file reading', 'autotest03') <=== error
('myll after file reading', 'autotest03')
答
你需要为myl每次迭代使用一个新字典。否则,你只是修改相同的一个。例如。
def readExcel(fInputFile="", sheetname=""):
mywb = xlrd.open_workbook(vInputFile, on_demand=True)
sheet_names = mywb.sheet_names()
mysheet = mywb.sheet_by_name(sheet_names[0])
for row_idx in range(1,mysheet.nrows):
myl={}
for col_idx in range(mysheet.ncols):
cell = mysheet.cell(row_idx,col_idx)
hdr = mysheet.cell(0,col_idx)
init_list(myl,str(hdr.value),str(cell.value))
if testmethod==NOLOAD:
mpt_noload_execute(myl)
else:
myll.append(myl)
print("myll after each row", myll[row_idx-1]['uname'])
for j in range(len(myll)):
print("myll after file reading", myll[j]['uname'])
现在myll将有一个新的字典附加,而不是仅仅修改旧的。
+0
谢谢马特,这是问题,谢谢。我以为一旦myl被追加到myll,我可以重新使用它,但看起来像它添加到myll作为参考点..在每一个行循环创建新的字典解决了。 – Sujan
你怎么得到这个错误信息?什么是my11? – matt
我认为这是一个简短的“** My L **签名** L ** ist”(myll),类似于“** My W ** ork ** B ** ook”(mywb),“* * My ** Spread ** sheet **“(mysheet),”** My L ** ist“(myl)。 –
它没有在页面的任何地方定义。看起来他正在重新使用myl而不是使用新的。 – matt