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

如何使用2D list替换投票系统中并行列表关联的实现方法

双列表关联结构转二维列表实现方案

基础转换方法

你现有两个关联列表的样例一般如下:

# 原有实现
names = ["候选人A", "候选人B", "候选人C"]
votes = [15, 22, 9]

直接通过列表推导式搭配zip即可合并为符合要求的二维列表,每个子列表固定存储「候选人姓名、得票数」两个元素:

# 转换为二维列表实现
candidates = [[name, vote] for name, vote in zip(names, votes)]

转换后你可以直接通过candidates[i][0]取索引为i的候选人姓名,candidates[i][1]取对应得票数,和原有索引匹配逻辑完全兼容,不需要修改原有业务的索引遍历逻辑。

常用操作适配

替换为二维列表后,原有投票相关操作的写法可以简化,同时避免两个列表长度不一致导致的关联错误:

  • 新增候选人:直接插入单条二维元素即可,不需要同时操作两个列表
    # 原有写法
    names.append("候选人D")
    votes.append(0)
    
    # 二维列表写法
    candidates.append(["候选人D", 0])
    
  • 给指定候选人加票
    target_name = "候选人B"
    # 写法1:遍历匹配修改
    for item in candidates:
        if item[0] == target_name:
            item[1] += 1
            break
    
    # 写法2:索引匹配修改,和原有逻辑兼容
    idx = [x[0] for x in candidates].index(target_name)
    candidates[idx][1] +=1
    
  • 得票排序:直接基于二维列表的得票字段排序,不需要额外处理关联关系
    # 按得票数从高到低排序
    candidates.sort(key=lambda x: x[1], reverse=True)
    

注意事项

请固定二维列表中子元素的顺序,统一约定第0位为姓名、第1位为得票数,避免后续取值出现顺序混淆问题

内容的提问来源于stack exchange,提问作者Omar El Gendy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:27:02