使用两个具有相同值但键不同的字典进行查找是一种不好的做法吗

2024-09-22 10:14:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道字典在查找一个键时很快,但是如果让两个字典指向相同的对象,但键不同但相关,那么使用这些键可以以不同的方式查找元素,这是一种浪费,特别是在内存方面。在我的应用程序中,查找速度比安排数据集的时间更重要

例:您有一个包含驾照信息的大集合。您将信息存储在词典中,密钥为驾驶执照上的各自名称。您还可以创建第二个字典,指向与密钥相同的对象,但使用驾照ID号作为密钥

class DL:
    def __init__(self, name, id):
        self.name = name
        self.id = id

licenses = {DL('jon', 1), DL('joe', 2), DL('jack', 3), DL('jill', 4)}
byName = dict()
byID = dict()

for i in licenses:
    byName[i.name] = i
    byID[i.id] = i 

print(byName)
print(byID)

Tags: 对象nameself信息id字典方式密钥
1条回答
网友
1楼 · 发布于 2024-09-22 10:14:04

从时间复杂度的角度来看,一对两字典不会实质性地影响算法的速度。它们仍然是hashmap,这意味着最坏的O(N)查找和平均的O(1)查找

阅读更多关于python字典时间复杂性的信息:https://wiki.python.org/moin/TimeComplexity

应该注意的是,Python具有针对整数和字符串的高度优化的哈希函数,因此,如果您发现自己编造了一些自定义的东西来支持单个字典,那么从性能角度来看,这可能是个坏主意

如果绝对性能对你来说很重要,那么你的低挂果实改善可能就在别处

相关问题 更多 >