相关疑难解决方法(0)

如何为降序值编写Python排序键函数

在最近的Python版本中,将函数传递给sort()前一个cmp函数的举动使得我对某些对象执行复杂的排序变得更加棘手.

例如,我想用一组字符串tie-breaker字段对从最新到最旧的一组对象进行排序.所以我希望日期顺序相反,但字符串按其自然顺序排列.使用比较函数,我可以反转日期字段与字符串字段的比较.但是通过关键功能,我需要找到一些方法来反转/反转日期或字符串.

使用数字很简单(虽然难看) - 只是从某些东西中减去它们 - 但我是否必须找到类似的日期(从另一个日期减去它们并比较timedeltas?)和字符串(...我不知道我如何以与语言环境无关的方式改变他们的顺序).

我知道functools.cmp_to_key()它的存在,但它被描述为"主要用作转换为Python 3的程序的转换工具,其中不再支持比较函数".这意味着我应该能够用关键方法做我想做的事 - 但是怎么做?

python sorting

30
推荐指数
4
解决办法
1万
查看次数

在python中排序列表

好的,所以我有点问题,我是python的新手抱歉.

我试图按分数排序列表,这是一个数字,但如果有抽奖,我需要按照名称的长度对它们进行排序,名称越短,排名越高.

所以我在这里有这个清单

11 Jenny
8 Adam
10 Mark
8 Ada
Run Code Online (Sandbox Code Playgroud)

当我在这里使用这个代码时,它就会回来了

11 Jenny
10 Mark
10 Mark
10 Mark

def sort(names, counts):
    newArr = []
    newNames = names
    newCount = counts
    for x in range(0, len(names)):
        newArr.append(findBiggest(newNames, newCount))
        for z in range(0, len(names)):
            name = newArr[len(newArr) - 1].split(" ")[1]
            print name 
            if names[z] == name:
                tempArr1 = newNames
                tempArr2 = newCount
                newNames = []
                newCount = []
                for y in range(0, len(tempArr1)):
                    if y != z:
                        newNames.append(tempArr1[y])
                        newCount.append(tempArr2[y])
    return …
Run Code Online (Sandbox Code Playgroud)

python sorting

1
推荐指数
1
解决办法
466
查看次数

标签 统计

python ×2

sorting ×2