我有一个名为countries.txt的列表,按名称,面积(以km2为单位),人口(例如["Afghanistan", 647500.0, 25500100]
)列出所有国家/地区。
def readCountries(filename):
result=[]
lines=open(filename)
for line in lines:
result.append(line.strip('\n').split(',\t'))
for sublist in result:
sublist[1]=float(sublist[1])
sublist[2]=int(sublist[2])
我正在尝试根据每个国家/地区使用冒泡排序对列表进行排序:
>> c = countryByArea(7)
>>> c
>>["India",3287590.0,1239240000]
在输入参数时应返回第n个最大区域。
我有这个,但我不确定如何输出信息
def countryByArea(area):
myList=readCountries('countries.txt')
for i in range(0,len(list)):
for j in range(0,len(list)-1):
if list[j]>list[j+1]:
temp=list[j]
list[j]=list[j+1]
list[j+1]=temp
答案 0 :(得分:0)
首先,实现一个通用的冒泡排序方法。这是一个正确的冒泡排序算法实现...我相信你可以在http://rosettacode.org
找到其他实现def bubble_sort(a_list,a_key):
changed=True
while changed:
changed = False
for i in range(len(a_list)-1):
if a_key(a_list[i]) > a_key(a_list[i+1]):
a_list[i],a_list[i+1] = a_list[i+1],a_list[i]
changed = True
然后简单地传递一个表示要排序的数据的键函数(在这种情况下,每行的中间值或索引
import csv
def sort_by_area(fname):
with open(fname) as f:
a = list(csv.reader(f))
bubble_sort(a,lambda row:int(row[1]))
return a
a = sort_by_area("a_file.txt")
print a[-7] #the 7th largest by area
你可以把这个信息结合起来完成你的任务......但是这个问题你应该问同学或老师的帮助......