我怎样才能归还整本字典



这是我的方法。我在返回整个字典时遇到问题

def get_col(amount):
letter = 0
value = []
values = {}
for i in range(amount):
letter = get_column_letter(i + 1)
[value.append(row.value) for row in ws[letter]]
values = dict(zip(letter, [value]))
value = []

return values

我希望它像这样输出:

{'A': ['ID', 'value is 1', 'value is 2', 'value is 3', 'value is 4', 'value is 5', 'value is 6']}
{'B': ['Name', 'value is 1', 'value is 2', 'value is 3', 'value is 4', 'value is 5', 'value is 6']}
{'C': ['Math', 'value is 1', 'value is 2', 'value is 3', 'value is 4', 'value is 5', 'value is 6']}

但当返回与"for"不同时,它只返回

{'A': ['ID', 'value is 1', 'value is 2', 'value is 3', 'value is 4', 'value is 5', 'value is 6']}

当返回在"for"循环之外时,它返回

{'C': ['Math', 'value is 1', 'value is 2', 'value is 3', 'value is 4', 'value is 5', 'value is 6']}

如有任何帮助,我们将不胜感激。非常感谢。

我假设您希望所有数据都在一个字典中:

values = dict(zip(letter, [value]))

目前,你的这部分代码每次都会覆盖字典。这就是为什么你得到";A";在for循环结束之前返回的dict,以及为什么在循环结束之后当返回时dict只是";C";dict作为";A";以及";B";被覆盖。

之后将返回放在for循环之外,而不是

values = dict(zip(letter, [value]))

使用

values[letter] = value

因为这将向dict添加更多的键/值。

ps。这是我的第一篇帖子,我希望它能有所帮助,而且可以理解。

编辑:如果你想要一个像你想要的输出节目一样的三本字典的列表,请这样做:

def get_col(amount):
letter = 0
value = []
values = []
for i in range(amount):
letter = get_column_letter(i + 1)
[value.append(row.value) for row in ws[letter]]
values.append(dict(zip(letter, [value])))
value = []

return values

您想要的输出不是一个字典。这是一份字典清单。在for循环中,在每次迭代时都要创建一个新的字典。当你返回时,你要么返回你创建的第一个,要么返回最后一个,如果你把返回分别放在里面或外面的话。

您需要返回已创建字典的列表

def get_col(amount):
letter = 0
value = []
values = {}

values_list = []

for i in range(amount):
letter = get_column_letter(i + 1)
[value.append(row.value) for row in ws[letter]]
values = dict(zip(letter, [value]))
value = []

values_list.append(values)

return values_list

最新更新