我有这个python函数,它从excel文件获取数据并在找到id时打印:
values = []
dict = {}
for rowidx in range(2, sheet.max_row + 1):
row = int(sheet['A' + str(rowidx)].value)
if row in [10,11,30]:
show = sheet[str(rowidx)]
#print show
key = sheet.cell(row=rowidx, column=1).value
for cells in show:
values.append(cells.value)
dict[key] = values
print values
print dict
此功能的输出是:
{10L: [10L, u'jhon', u'abc', u'wa@gmail.com', None, 11L, u'smith', u'xyz', u'sa@gmail.com', None], 11L: [10L, u'jhon', u'abc', u'wa@gmail.com', None, 11L, u'smith', u'xyz', u'sa@gmail.com', None]}
虽然这会将id添加为字典的键,但会将整个列表附加到每个键。我想在rowidx
递增时打破列表,然后添加新密钥并再次启动列表:
{10L: [10L, u'jhon', u'abc', u'wa@gmail.com', None]}
{11L: [11L, u'smith', u'xyz', u'sa@gmail.com', None]}
同时删除列表中的第一项,因为它已作为键添加。
更新 我在循环外移动了dict [key] =值并得到了这个输出
{10L: [u'jhon', u'abc', u'wa@gmail.com', None], 11L: [u'jhon', u'abc', u'wa@gmail.com', None, 11L, u'smith', u'xyz', u'sa@gmail.com', None]}
我认为在每次迭代后清空列表应该完成工作
答案 0 :(得分:0)
每次迭代后删除列表的内容都可以完成工作。
values = []
dict = {}
for rowidx in range(2, sheet.max_row + 1):
row = int(sheet['A' + str(rowidx)].value)
if row in [10,11,30]:
show = sheet[str(rowidx)]
print show
key = sheet.cell(row=rowidx, column=1).value
for cells in show:
values.append(cells.value)
dict[key] = values[1:]
del values[:]
print dict
输出:
{10L: [u'jhon', u'abc', u'wa@gmail.com', None], 11L: [u'smith', u'xyz', u'sa@gmail.com', None]}