Python 我怎样才能归还整本词典?

Python 我怎样才能归还整本词典?,python,dictionary,openpyxl,Python,Dictionary,Openpyxl,这是我的方法。我很难把整本字典还回去 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 = []

这是我的方法。我很难把整本字典还回去

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']}

任何帮助都将不胜感激。谢谢大家!

您想要的输出不是一个单独的字典。这是一份字典清单。 在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

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

values=dict(zip(字母,[value]))

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

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

values=dict(zip(字母,[value]))

使用

值[字母]=值

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

附:这是我的第一篇文章,我希望它对我有帮助,并且是可以理解的

编辑:如果您想要一个包含三个字典的列表,如您想要的输出所示,请执行以下操作:

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

请编辑问题中的代码,使其成为一个-包括一些显示代码输出问题的最小数据。您在每次迭代时覆盖字典
-请尝试更新字典:
values.update(dict(zip(字母,[value]))
并返回“外部”循环。使用
ws.iter\u cols()
执行此操作要容易得多。