python - 如何打印自定义哈希表?
问题描述
我正在创建一个包裹递送程序。我创建了一个自定义链接哈希表,以及一个从 CSV 读取数据并将数据插入哈希表的包类。如何打印新创建的自定义哈希表以确保它正确输入数据?我尝试了多种不同的方法,最终根本无法打印。感谢您的时间。
这是我正在使用的哈希表 .insert 方法:
class HashTable:
# Constructor
# Space-time complexity is O(1)
def __init__(self, initial_capacity=40):
# initialize the hash table with empty bucket list entries.
self.table = []
for i in range(initial_capacity):
self.table.append([])
# Created this private method to create hash keys in the other methods
# Space-time complexity is O(1)
def _get_key(self, key):
hash_key = int(key) % len(self.table)
return hash_key
# Insert a new package value into the hash table
# Space-time complexity is O(N)
def insert(self, key, value):
hash_key = self._get_key(key)
key_value = [key, value]
if self.table[hash_key] is None:
self.table[hash_key] = list([key_value])
return True
else:
for i in self.table[hash_key]:
if i[0] == key:
i[1] = key_value
return True
self.table[hash_key].append(key_value)
return True
包类:
import csv
from HashTable import HashTable
class Package:
def __init__(self, package_id, address, delivery_time):
self.package_id = package_id
self.address = address
self.delivery_time = delivery_time
IN_ROUTE = 'in_route'
DELIVERED = 'delivered'
AVAILABLE_AT_HUB = 'at_hub'
# Open file
with open('WGUData.csv') as packages_file:
# create a reader object
reader = csv.reader(packages_file, delimiter=',')
# Inserts data into table
insert_into_package_hash = HashTable()
package_list = []
# read each line of the file
for row in reader:
package = Package(row[0], row[1], row[5])
package_list.append(package)
key = package.package_id
value = (package.address, package.delivery_time)
insert_into_package_hash.insert(key, value)
对我有意义的印刷品:
print(insert_into_package_hash)
但这会返回错误,重复:
<HashTable.HashTable object at 0x0000022BE6FDF370>
<HashTable.HashTable object at 0x0000022BE6FDF370>
解决方案
如果您想要对象(HashTable)的字符串表示,则需要__str__
在类定义中重载该方法。
就像是
def __str__(self):
return "foo"
但将 HashTable 实例中的数据作为格式化字符串返回。
推荐阅读
- spring-boot - 我可以在运行时向 spring-kafka 中的生产者和消费者提供配置详细信息吗?
- java - Parsing JSON and Evaluating expressions from its fields
- c - 凯撒密码算法中C中的分段错误
- r - 如何获得与 ggtern 中显示的值匹配的 geom_crosshair_tern 线?
- python - 使用 cwiid 模块添加两个 while 循环 - Raspberry Pi
- javascript - elem.style.background 在我的笑话测试中没有被选中
- charles-proxy - 查询为空时如何使用Charles将请求映射到本地文件?
- python - 如何为与 PyInstaller 捆绑的 Windows、MacOS 和 Linux 应用程序创建快捷方式图标
- android - 无法导航到片段 - kotlin
- typescript - 如何为此去抖动功能编写测试?