麻烦使用插入排序与Python列表

时间:2013-10-08 15:55:33

标签: python sorting insertion-sort

我给了一个类似于以下内容的文本文件......

hello 20
world 30
i'm 50
ok 20

我正在尝试使用插入排序来排列数据的数字部分。我的代码如下所示......

def insertion_sort():
    filename = input('Enter filename: ')
    lst = []
    for line in open(filename):
        lst.append(int(line))
    print(lst)
    for index in range(1,len(lst)):
        value = lst[index]
        leftvalue = index -1
        while leftvalue >= 0 and lst[leftvalue] > value:
            if value < lst[leftvalue]:
                lst[leftvalue + 1] = lst[leftvalue]
                lst[leftvalue] = value
                leftvalue = leftvalue - 1
            else:
                break
    return lst == insertion_sort()

我收到以下错误... ValueError: invalid literal for int() with base 10: 'Merchant_0 96918\n'

我尝试使用float替换为int但我无法将字符串转换为浮点数。

1 个答案:

答案 0 :(得分:0)

你不能得到一个整数:

lst.append(int(line))

如果包含行,请说“世界30”

你准备得到什么?如果要获取数值,请尝试:

int(line.split(' ')[1])

或更好(即使输入行中有多个空格也能正常工作):

import re
reobj=re.search('(\d+)$',line)
int(reobj.group(1))

整个分拣过程变为:

import operator
import re

lines = {}
for line in open('tst.txt'):
    reobj=re.search('(\d+)$',line)
    int_key=int(reobj.group(1))
    value=line[0:reobj.start()]
    lines[int_key]=value

# See : http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by-value?rq=1
print "Sorted : ", sorted(lines.iteritems(), key=operator.itemgetter(0))