Python 嵌套的While循环没有按我希望的方式工作

Python 嵌套的While循环没有按我希望的方式工作,python,debugging,Python,Debugging,我最近开始学习Python,我是stackoverflow的新手。 我一直在为下面的代码而失眠。我知道这个错误一定很愚蠢,但我似乎找不到:( 有人能帮我弄清楚为什么我的代码没有输出以下内容吗: [ {"first_name": "Elisabeth", "last_name": "Gardenar", "city": "Toledo", "state": "OH"}, {"first_name": "Jamaal", "last_name": "Du", "city": "Syl

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

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

[
    {"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'}
]
这是我的代码:

[
    {"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'}
]

您一直在覆盖相同的
用户指令
。您应该在循环的每次迭代中创建一个新的用户指令:

实际上,您需要重置外部循环中的
用户指令和
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
def convert_表(表数据):
新的_表=[]
行=1
当行
您可以在列表中使用
dict(zip())
,其中键是表数据的第一个索引,并使用for循环将表数据的其余部分作为值:

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

lst = [dict(zip(table_data[0], values)) for values in table_data[1:]]

print(lst)
输出:

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

您需要将用户_dict={}移动到第一个while循环中。您可能想花点时间学习如何使用vscode或pycharm-ce.Nice中断python代码。我正要发布这篇文章。