如何以对象名为键将对象存入哈希表?Python实现问题求助
问题修复方案
核心错误点:
- 你将哈希表的实例化代码写在了for循环内部,每遍历一行数据就会创建一个全新的空哈希表,最终循环结束后你拿到的哈希表仅存储了文件最后一行生成的Person对象,之前存入的数据全部被新的空哈希表覆盖。
修复后的代码如下:
# 哈希表实例化移到循环外,全程复用同一个实例 q = HashtableDict(1000) with open("names.csv", "r") as names_file: for line in names_file.readlines(): # 可选补充:去除每行末尾的换行符、空行,避免Person初始化异常 line = line.strip() if not line: continue person = Person(line) q.store(key=person.name, data=person)
额外排查点:
- 如果你的csv文件包含表头,需要跳过第一行再解析,避免把表头行生成异常的Person对象
- 确认Person类初始化时正确拆分了每行的姓名、电话、邮箱三个字段,且name属性取值正确,没有混入多余的逗号、空格等字符
- 确认HashtableDict类的store和find方法逻辑正确,哈希冲突处理、键的哈希计算没有问题
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

