我有一个当前的算法来排序我的字典,但它不会工作,如果你比较4个或更多的元素。我做错什么了?在
database={
0:['Ninna','Layug','201504584','09954895032','Quezon City','ninnalayug@gmail.com','18','02/21/1999'],
1:['Yela','Gregorio','201506070','09984548540','UP Diliman','yelagregorio@gmail.com','19','04/18/1999'],
2:['Denise','Gregorio','201506070','09984548540','UP Diliman','yelagregorio@gmail.com','19','04/18/1999'],
3:['Alia','Layug','201504584','09954895032','Quezon City','ninnalayug@gmail.com','18','02/21/1999'],
4:['Keeno','Layug','201504584','09954895032','Quezon City','ninnalayug@gmail.com','18','02/21/1999']
}
profiles=['0','1','2','3','4']
for x in range(len(profiles)):
print(profiles)
for j in range(len(profiles)-1-x):
v1=database[j][0]
v2=database[j+1][0]
if v1>v2:
sorted=False
temp=profiles[j+1]
profiles[j+1]=profiles[j]
profiles[j]=temp
for x in profiles:
print(database[int(x)][0],",",database[int(x)][1])
我对你的代码做了一些修改 (一)
而不是
^{pr2}$因为j有profiles的索引,但是我们需要的是profiles中的实际值,这是字典的关键。在
然后使用bubble j和j+1,只考虑从0到len(profiles)-1的值。这个-1会使你错过最后一个值。所以我考虑了从1到len(轮廓)的值,并使用了bubble j和j-1
这是完整的代码
希望这对你有用
输出如下
这两条线是错的。您使用的是
j
中的j
索引,而不是存储在这些索引中的配置文件密钥。它停止工作,因为无论交换,总是比较相同的元素。在它们应该是这样的:
^{pr2}$这是跑第一关的结果。顶部的v1/v2是错误的值,而底部的v1/v2是正确的值。在
另外,这是在Python中交换的方式:
这里有一个更好的算法:
下面是如何使用标准方法来实现:
相关问题 更多 >
编程相关推荐