Python 将字符串转换为数字(非解析)以进行基数排序

Python 将字符串转换为数字(非解析)以进行基数排序,python,radix-sort,Python,Radix Sort,我有一个学校项目,我需要用不同的排序算法对所有类型的数据进行排序。基数排序工作得很好,但它只能对整数进行排序。我可能不会为整数以外的任何东西添加排序结果,因为每个数据类型都将被排序为整数 这就是说,我想知道是否有更好的方法将字符串转换为整数?以下是我提供的。我不想智胜python,所以尽量使用标准函数 def charToHex(char): return hex(ord(char))[2:] def stringToHex(text): t = '' for char

我有一个学校项目,我需要用不同的排序算法对所有类型的数据进行排序。基数排序工作得很好,但它只能对整数进行排序。我可能不会为整数以外的任何东西添加排序结果,因为每个数据类型都将被排序为整数

这就是说,我想知道是否有更好的方法将字符串转换为整数?以下是我提供的。我不想智胜python,所以尽量使用标准函数

def charToHex(char):
    return hex(ord(char))[2:]

def stringToHex(text):
    t = ''
    for char in text:
        t += charToHex(char)

    return t

def stringToInt(text):
    return int(stringToHex(text), 16)

print stringToInt('allo')
print stringToInt('allp')
print stringToInt('all')
它确实很有效,但我很高兴知道是否有更好的方法来处理这个问题。无论如何,用基数排序对整数以外的任何东西进行排序听上去毫无意义。因为即使你能对整数列表进行排序。您必须将所有键的值返回到列表中

我想做那样的事。对于列表中的每个值,获取一个整数键。将该键放入哈希表中,并将该值放入该哈希表的列表中。用整数键替换列表中的值,然后对键列表进行排序

对于排序列表中的每个键,获取该键的值列表并弹出一项。将该项目放入列表中并继续

我还想知道是否有一种方法可以优化这个过程,使其值得使用基数排序,而不是不需要任何转换的其他排序。列表中的项目数量可能超过50000。

编辑

实际上,这里的代码不适用于不同大小的字符串。我不知道该怎么检查。用空格填充字符串似乎有效

def getMaxLen(ls):
    lenght = 0

    for text in ls:
        lenght = max(lenght, len(text))

    return lenght

def convertList(ls):
    size = getMaxLen(ls)
    copy = ls[:]

    for i, val in enumerate(copy):
        copy[i] = stringToInt(val.ljust(size, ' '))

    return copy

print convertList(["allo", "all", "bal"])
首先,看一看。这篇文章表明,是的,在某些情况下,您可以找到一种比任何其他排序更快的字符串基数排序算法

第二,也是更重要的一点,我会问你自己,你是否在做过早的优化。使用python的
sort()
函数对50k个项目进行排序将会非常快。除非您确定这是应用程序中的瓶颈,否则我不会担心它,只会使用
sort()
函数。如果这是一个瓶颈,我还要确保没有任何方法可以避免进行所有这些排序(例如缓存、处理未排序数据的算法等)