python - 根据其他结果对数据进行排名
问题描述
我在下面的代码中有两组链接的数据 - 5 个“网络”和 5 个通过“TT”值的奇异结果。每个 TT 值对应一个网络集(例如 TT1=100 是来自 network1 的结果)。
我的目标是能够根据 TT 结果对 5 个网络进行排名。
network1 = [0,1,0,0,0,0,1,0,0,0,1,1,0,0,1]
network2 = [0,1,0,0,0,0,0,0,1,0,1,1,0,0,1]
network3 = [0,1,0,0,0,0,0,1,0,0,1,1,0,0,1]
network4 = [0,1,0,0,0,0,0,0,0,0,1,1,0,1,1]
network5 = [0,1,1,0,0,0,0,0,0,0,1,1,0,0,1]
networks = [network1, network2, network3, network4, network5]
TT1 = 100
TT2 = 70
TT3 = 80
TT4 = 105
TT5 = 120
TTranks = [TT1,TT2,TT3,TT4,TT5]
s = {x: i for i, x in enumerate(sorted(set(TTranks)))}
ranks = [s[x] for x in TTranks]
print(ranks)
此过程的以下结果仅对 TT 值进行排名,尽管我不确定如何链接它以便相应的网络也得到适当的排名。
[2, 0, 1, 3, 4]
也就是说,我希望它将 5 个网络排名为 network2、network3、network1、network4、network5。这将非常有用,因为我希望稍后能够从有序的网络结果中调用。
此外,是否有更有效的方法来完成此过程?
我感谢所有的帮助!!
解决方案
您可以使用/函数的key
可选参数根据自定义值进行排序。sort
sorted
代码
network1 = [0,1,0,0,0,0,1,0,0,0,1,1,0,0,1]
network2 = [0,1,0,0,0,0,0,0,1,0,1,1,0,0,1]
network3 = [0,1,0,0,0,0,0,1,0,0,1,1,0,0,1]
network4 = [0,1,0,0,0,0,0,0,0,0,1,1,0,1,1]
network5 = [0,1,1,0,0,0,0,0,0,0,1,1,0,0,1]
networks = [network1, network2, network3, network4, network5]
TT1 = 100
TT2 = 70
TT3 = 80
TT4 = 105
TT5 = 120
TT = [TT1, TT2, TT3, TT4, TT5]
sorted_networks_with_indices = sorted(enumerate(networks), key=lambda t: TT[t[0]])
sorted_indices = [i for i,n in sorted_networks_with_indices]
sorted_networks = [n for i,n in sorted_networks_with_indices]
print(sorted_indices)
print(sorted_networks)
输出:
[1, 2, 0, 3, 4]
[[0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1],
[0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1]]
代码说明
enumerate(networks)
列出索引和网络i,n
所在的对。这些对使用函数进行排序,用于排序的键是。这是对,索引也是。因此TT 对应于 index-network pair 。i
n
sorted
lambda t: TT[t[0]]
t
i,n
t[0]
i
TT[t[0]]
t
关于 0-index 的注意事项
中的索引sorted_indices
是[1, 2, 0, 3, 4]
而不是[2, 3, 1, 4, 5]
因为 python 列表是 0 索引的,但这对应于 network2、network3、network1、network4、network5。如果您对此不满意,可以将相关行替换为:
sorted_indices = [i+1 for i,n in sorted_networks_with_indices]
参考
sorted
函数及其key
参数:https : //docs.python.org/3/library/functions.html#sorted- 的
sort
成员list
及其key
参数:https ://docs.python.org/3/library/stdtypes.html#list.sort
推荐阅读
- javascript - Lerna bootstrap 不链接本地依赖项?
- arrays - 使用索引和数组创建带有函数的数组?
- powerbi - 按周和月聚合的销售数据的自定义日历
- git - Git rebase 跳过相同的提交
- jsf - 如何使用 JSF 和 Java 下载 excel 文件
- automation - 如何获取 DM 中打开文件的路径?
- c# - 将 bool 插入 SQL 数据库,c#
- jmeter - JMeter :: 用于将测试数据与用户 ID 映射的参数化查询
- docker - 如何为分子内部剧本任务设置 no_log: true?
- xcode - Cloud Firestore 不仅适用于 iOS | 扑