You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何随降序排序的votes数组同步排序对应names数组

同步排序关联数组的解决方案

嘿,这个问题太常见啦!当你有names和votes这种索引一一对应的数组时,直接单独排序votes肯定会搞乱对应关系——核心思路就是先把两组数据绑定成配对结构,排序后再拆分回原数组类型。我给你用两种常用编程语言举个具体例子:

Python 实现

names = ["Alice", "Bob", "Charlie"]
votes = [15, 25, 10]

# 把票数和姓名配对成元组列表,锁死两者的关联关系
paired_data = list(zip(votes, names))
# 按票数降序排序,lambda指定以元组第一个元素(票数)为排序依据
sorted_paired = sorted(paired_data, key=lambda x: x[0], reverse=True)
# 拆分回两个独立数组,zip(*)可以把配对的元组重新拆解成两组
sorted_votes, sorted_names = zip(*sorted_paired)

# 如果需要列表类型(zip返回的是元组),转一下就行
sorted_names = list(sorted_names)
sorted_votes = list(sorted_votes)

print(sorted_names)  # 输出: ['Bob', 'Alice', 'Charlie']
print(sorted_votes)  # 输出: [25, 15, 10]

JavaScript 实现

const names = ["Alice", "Bob", "Charlie"];
const votes = [15, 25, 10];

// 用map生成包含姓名和对应票数的对象数组,绑定关联关系
const pairedData = names.map((name, idx) => ({
  name: name,
  vote: votes[idx]
}));

// 按票数降序排序,b.vote - a.vote就是降序的规则
pairedData.sort((a, b) => b.vote - a.vote);

// 从排序后的对象数组里提取出姓名和票数数组
const sortedNames = pairedData.map(item => item.name);
const sortedVotes = pairedData.map(item => item.vote);

console.log(sortedNames); // 输出: ['Bob', 'Alice', 'Charlie']
console.log(sortedVotes); // 输出: [25, 15, 10]

核心逻辑总结

不管用哪种语言,本质都是这三步:

  • 绑定:把两个数组的对应元素打包成一个可排序的结构(元组、对象等)
  • 排序:以票数为依据对这个结构数组降序排序
  • 拆分:从排序后的结构里提取出姓名和票数,得到同步排序后的数组

要是用Java、C#这类静态语言,思路也一样——先定义一个包含name和vote字段的类/结构体,把数据填充进去,排序后再提取字段就行。

内容的提问来源于stack exchange,提问作者Kai Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:55:12