我有这个分配,我必须把一个文本文件放到一个列表中,所以它最终看起来像这样:
[["Afghanistan",647500.0,25500100],["Albania",28748.0,2821977],...,["Zimbabwe",390580.0,12973808]]
所以由函数readcountries()定义的列表列表 我想根据列表列表中的一个参数(即国家/地区名称后面的第二个数字)对冒号进行排序(这是分配所需的)。
这是我到目前为止所拥有的
def bubblesort():
Countries = readcountries()
for i in range(0,len(Countries)):
madeSwap = False
for j in range (0,len(Countries)-(i+1)):
if Countries[j][2] > Countries[j+1][2]:
temp = Countries[j+1]
Countries[j+1][2] = Countries[j][2]
Countries[j] = temp
madeSwap = True
if not madeSwap:
return
但是由于某些原因我没有得到任何类型的排序,我甚至无法看到排序后的列表。 欢迎任何帮助
答案 0 :(得分:0)
问题在这里Countries[j+1][2] = Countries[j][2]
你必须用Countries[j+1] = Countries[j]
替换
另外
你必须调用这个
if not madeSwap:
return
在外面
并返回列表
def bubblesort():
Countries = [["Afghanistan",647500.0,3],["Albania",28748.0,1],["Zimbabwe",390580.0,2]]
for i in range(0,len(Countries)):
madeSwap = False
for j in range (0,len(Countries)-(i+1)):
if Countries[j][2] > Countries[j+1][2]:
temp = Countries[j+1]
Countries[j+1] = Countries[j]
Countries[j] = temp
madeSwap = True
if not madeSwap:
return Countries
return Countries
>>> bubblesort()
[['Afghanistan', 647500.0, 1], ['Zimbabwe', 390580.0, 2], ['Albania', 28748.0, 3]]