Python 嵌套的While循环没有按我希望的方式工作
我最近开始学习Python,我是stackoverflow的新手。 我一直在为下面的代码而失眠。我知道这个错误一定很愚蠢,但我似乎找不到:( 有人能帮我弄清楚为什么我的代码没有输出以下内容吗: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
[
{"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代码。我正要发布这篇文章。