Python 3.x 对文本文档进行排序python 3
这是文本文档:第一个字符串是金属的类型,第二个是金属条的数量,第三个是重量,第四个是值Python 3.x 对文本文档进行排序python 3,python-3.x,Python 3.x,这是文本文档:第一个字符串是金属的类型,第二个是金属条的数量,第三个是重量,第四个是值 Gold 1 5 750 Silver 1 1 400 Rhodium 1 4 500 Platinum 1 6 1000 我必须使用插入排序按值对列表进行排序。这是我到目前为止所拥有的 def sortMetalsByValuePerBar(metals): for i in range(1,len(metals)): j = i while j > 0
Gold 1 5 750
Silver 1 1 400
Rhodium 1 4 500
Platinum 1 6 1000
我必须使用插入排序按值对列表进行排序。这是我到目前为止所拥有的
def sortMetalsByValuePerBar(metals):
for i in range(1,len(metals)):
j = i
while j > 0 and metals[j-1] > metals[j]:
metals[j - 1], metals[j] = metals[j], metals[j - 1]
j -= 1
return metals
这是否正确?尝试从这个解决方案中学习
data="""
Gold 1 5 750
Silver 1 1 400
Rhodium 1 4 500
Platinum 1 6 1000
"""
data = filter(None, data.splitlines())
data = [l.split() for l in data]
data = [ (l[0], int(l[1]), int(l[2]), int(l[3])) for l in data ]
def insertion_sort(l, keyfunc=lambda i:i):
for i in range(1, len(l)):
j = i-1
key = l[i]
while keyfunc(l[j]) > keyfunc(key) and (j >= 0):
l[j+1] = l[j]
j -= 1
l[j+1] = key
insertion_sort(data, keyfunc=lambda l: l[3])
for l in data:
print(l)
# Output:
# ('Silver', 1, 1, 400)
# ('Rhodium', 1, 4, 500)
# ('Gold', 1, 5, 750)
# ('Platinum', 1, 6, 1000)
如果答案对你有用,记得竖起大拇指。。