gpt4 book ai didi

Python——按第一项排列元组,按第二项解析关系

转载 作者:行者123 更新时间:2023-11-28 22:41:08 25 4
gpt4 key购买 nike

我有以下元组列表:

[(1, 6), (2, 3), (2, 5), (2, 2), (1, 7), (3, 2), (2, 2)]

我想按元组中的第一个值对这个列表进行排序,并按第二个值解析关系,这样输出看起来像这样:

[1, 5, 6, 3, 2, 7, 3]

我想不出一个简单的方法来做到这一点,所以我一直在寻找类似 scipy.stats.rankdata 的东西功能。但是,对于我的用例,它缺少类似 numpy.argsort 中的 order 参数的内容。 .我觉得我在这里遗漏了一些明显的东西,在这种情况下,我为没有更好地谷歌搜索我的答案而道歉!

编辑:

为了更好地解释我想要实现的目标:

给定一个元组列表

>>> l = [(1, 6), (2, 3), (2, 5), (2, 2), (1, 7), (3, 2), (2, 2)]

我想创建一个包含列表元素排名的列表l。例如,按每个元组中的第一个值排名:

>>> from scipy import stats
>>> stats.rankdata([i for i, j in l], method='min')
array([ 1., 3., 3., 3., 1., 7., 3.])

这几乎是我想要的,但是列表中有平局(有两次 1. 和四次 3.)。

我想使用每个元组中的第二个值打破平局,例如,两个元组 (2, 2) 将具有相同的等级,但 (2, 3) 和 (2, 5) 将有不同的等级。结果列表应如下所示:

array([ 1.,  5.,  6.,  3.,  2.,  7.,  3.])

最佳答案

Python 自然地对序列进行排序。

>>> [x for x, y in sorted(enumerate([(1, 6), (2, 3), (2, 5), (2, 2), (1, 7), (3, 2), (2, 2)], start=1), key=operator.itemgetter(1))]
[1, 5, 4, 7, 2, 3, 6]

关于Python——按第一项排列元组,按第二项解析关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com