【发布时间】:2018-12-22 05:26:14
【问题描述】:
我正在为班级做递归作业。我了解如何使用该公式,但我相信我在正确打印字典方面做错了。有人可以帮我弄清楚如何获得正确的输出吗?
[('4213', 'STEM Center', 0), ('4201', 'Foundations Lab', 1), ('4204', 'CS Lab', 2), ('4218', 'Workshop Room', 3), ('4205', 'Tiled Room', 4), ('Out', 'Outside', 5)]
[('4201', 'Foundations Lab', 1), ('4204', 'CS Lab', 2), ('4205', 'Tiled Room', 4), ('4213', 'STEM Center', 0), ('4218', 'Workshop Room', 3), ('Out', 'Outside', 5)]
[('4204', 'CS Lab', 2), ('4201', 'Foundations Lab', 1), ('Out', 'Outside', 5), ('4213', 'STEM Center', 0), ('4205', 'Tiled Room', 4), ('4218', 'Workshop Room', 3)]
[('4204', 'CS Lab', 2), ('4201', 'Foundations Lab', 1), ('Out', 'Outside', 5), ('4213', 'STEM Center', 0), ('4205', 'Tiled Room', 4), ('4218', 'Workshop Room', 3)]
相反,我得到:
[('4213', 'STEM Center', 0), ('4218', 'Workshop Room', 3), ('4201', 'Foundations Lab', 1), ('4205', 'Tiled Room', 4), ('4204', 'CS Lab', 2), ('out', 'Outside', 5)]
无 无
我已经弄明白了这一点。
def recursiveSort(sensor_list,n,t): #Recursive Sort
if n == 0:
return sensor_list
for i in range(n-1):
if sensor_list[i][t] > sensor_list[i + 1][t]:
temp = sensor_list[i]
sensor_list[i] =sensor_list[i + 1]
sensor_list[i + 1] = temp
return recursiveSort(sensor_list,n - 1,t)
Dict = {'4213' : ('STEM Center', 0),
'4201' : ('Foundations Lab', 1),
'4204' : ('CS Lab', 2),
'4218' : ('Workshop Room', 3),
'4205' : ('Tiled Room', 4),
'out' : ('Outside', 5),
}
sensor_list=[]
[ sensor_list.append((key,Dict[key][0],Dict[key][1])) for key in Dict ] #Adding values to a dictionary into a tuple using list comprehension
print sensor_list
print recursiveSort(sensor_list,len(sensor_list),0)
print recursiveSort(sensor_list,len(sensor_list),1)
print sensor_list
【问题讨论】:
-
t参数应该做什么?另外,你能修复你的缩进吗?它使您的代码难以阅读。 -
请修正缩进。你的问题被标记为python3,但你显然使用了python2风格的打印语句。
-
目前,
recursiveSort没有做任何事情,因为您在for循环之后有return语句,所以它永远不会被调用。要么您在此处粘贴代码时出错,要么您的真实代码中出现错误。
标签: python dictionary recursion bubble-sort