首页 > 解决方案 > 嵌套的 While 循环没有按照我想要的方式工作

问题描述

我最近开始学习 Python,我是 stack overflow的新手。我一直在为下面的代码失眠。我知道错误一定很愚蠢,但我似乎找不到它:(

有人可以帮我弄清楚为什么我的代码没有输出以下内容:

[
    {"first_name": "Elisabeth", "last_name": "Gardenar", "city": "Toledo", "state": "OH"},
    {"first_name": "Jamaal", "last_name": "Du", "city": "Sylvania", "state": "OH"},
    {"first_name": "Kathlyn", "last_name": "Lavoie", "city": "Maumee", "state": "OH"}
]

这是我的代码:

def convert_table(table_data):  


  new_table = []
  user_dict = {}
  row = 1
  i = 0

  while row < len(table_data): 
    while i < len(table_data[0]):
      user_dict[table_data[0][i]] = table_data[row][i]
      i += 1
    new_table.append(user_dict)
    row += 1

  return new_table


table_data = [
    ["first_name", "last_name", "city", "state"],
    ["Elisabeth", "Gardenar", "Toledo", "OH"],
    ["Jamaal", "Du", "Sylvania", "OH"],
    ["Kathlyn", "Lavoie", "Maumee", "OH"]
] 


print(convert_table(table_data)) 

这是当前的输出:

[
{'first_name': 'Elisabeth', 'last_name': 'Gardenar', 'city': 'Toledo', 'state': 'OH'}, 
{'first_name': 'Elisabeth', 'last_name': 'Gardenar', 'city': 'Toledo', 'state': 'OH'}, 
{'first_name': 'Elisabeth', 'last_name': 'Gardenar', 'city': 'Toledo', 'state': 'OH'}
]

标签: pythondebugging

解决方案


实际上,您需要在外循环中重置user_dict& :i

def convert_table(table_data):
  new_table = []
  row = 1

  while row < len(table_data):
    user_dict = {}
    i = 0
    while i < len(table_data[0]):
      user_dict[table_data[0][i]] = table_data[row][i]
      i += 1
    new_table.append(user_dict)
    row += 1

  return new_table

推荐阅读