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

Python实现HashMap时append内层列表导致所有子列表新增元素问题

问题根因

该问题是Python中可变对象的引用共享特性导致的:
当你使用self.table = [[]] * size初始化哈希表时,并不会生成size个独立的空列表,只会创建1个空列表对象,再把该对象的内存引用重复size次填充到外层数组中。也就是说self.table中所有的子列表指向的是同一个内存地址的对象,你对任意索引位的子列表执行append操作,本质上修改的都是同一个列表,所以所有位置都会同步出现新增的元素。

修复方案

将__init__方法的初始化逻辑替换为列表推导式即可,每次循环都会生成全新的独立空列表:

def __init__(self, size=10):
    self.table = [[] for _ in range(size)]

修改后调用put方法只会修改哈希取模对应索引位的子列表,其余位置保持为空,输出结果和你的预期一致。

内容的提问来源于stack exchange,提问作者S. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:05