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

是否可让多个键指向同一个对象?实现列表多索引返回相同值需求

实现方案

你可以通过重写序列的索引访问逻辑,或者直接用分组计算的方式实现需求,不需要重复存储相同值。

方案1:直接用计算式访问(无需自定义类,最简便)

你只需要把不重复的实际值存储到一个基础列表,访问的时候用公式计算对应分组下标即可:

  • 每4个索引为一组,1开头的索引对应基础列表的下标为 (i-1) // 4,如果你的索引是从0开始的话,直接用 i // 4 即可

示例代码(Python):

# 仅存储每组的实际值,没有重复内容
base_values = ["第一组返回值", "第二组返回值", "第三组返回值"]

# 访问索引3,属于第一组
i = 3
result = base_values[(i - 1) // 4]
print(result) # 输出:第一组返回值

# 访问索引6,属于第二组
i = 6
result = base_values[(i - 1) // 4]
print(result) # 输出:第二组返回值

方案2:自定义列表类,实现原生myList[i]访问效果

如果要保持原生列表的调用方式,可以自定义类重写索引访问逻辑:

class GroupedList:
    def __init__(self, base_values, group_size=4):
        self.base_values = base_values
        self.group_size = group_size
    
    def __getitem__(self, i):
        # 适配1开头的索引,如果使用0开头索引去掉减1逻辑即可
        group_idx = (i - 1) // self.group_size
        return self.base_values[group_idx]

# 用法示例
myList = GroupedList(["值A", "值B", "值C"])
print(myList[2]) # 输出值A
print(myList[4]) # 输出值A
print(myList[5]) # 输出值B
print(myList[8]) # 输出值B

如果需要支持修改值、查询长度等其他列表能力,可以继续添加__setitem__、__len__等对应魔法方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:36:02