Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python列表中使用插入排序时遇到问题_Python_Sorting_Insertion Sort - Fatal编程技术网

在Python列表中使用插入排序时遇到问题

在Python列表中使用插入排序时遇到问题,python,sorting,insertion-sort,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)): va

我得到了一个类似于以下内容的文本文件

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()
我尝试使用插入排序来排列数据的数字部分。我的代码如下所示

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()
def insertion_sort():
filename=input('输入文件名:')
lst=[]
对于打开的行(文件名):
一级追加(整数(行))
打印(lst)
对于范围(1,len(lst))中的索引:
值=lst[索引]
leftvalue=索引-1
当leftvalue>=0和lst[leftvalue]>值时:
如果值
我得到以下错误。。。
ValueError:以10为基数的int()的文本无效:“Merchant\u 0 96918\n”


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

您无法使用以下参数获得整数:

lst.append(int(line))

如果行包含,请说“world 30”

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

int(行分割(“”)[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))

那么,您认为字符串
Merchant_0 96918\n
应该转换为什么整数?它应该转换为数字96918那么您尝试了什么,以便提取字符串中要转换为整数的部分?您了解Python中的哪些字符串处理函数?我们已经介绍了除strip函数之外的大多数字符串函数。我正在考虑对它做一些研究,看看它在这种情况下对我有什么帮助。