Sen, dict sokulan anahtarların tüm önekleri koyabiliriz. (Ben giderdim günlük kullanım için
def insert_with_prefixes(key, value, dict_):
prefixes = (key[:i+1] for i in xrange(len(key)))
dict_.update((prefix, value) for prefix in prefixes)
: Sen O (1) araması olurdu, ancak (k anahtar uzunluğu O (k)) ön işleme üzerinde zaman harcamak ve büyük miktarda bellek kaybına neden olacak şekilde ve ben arshajii's cevabındaki yöntemle giderim. Sana anahtarın bir parçası anahtarın karma tahmin edemediği gibi daha iyi bir şey modernleşmek şüpheliyim
>>> a = {}
>>> insert_with_prefixes('hello', 'world', a)
>>> insert_with_prefixes('homo', 'sapiens', a)
>>> a
{'h': 'sapiens', 'hom': 'sapiens', 'homo': 'sapiens', 'ho': 'sapiens',
'hel': 'world', 'hell': 'world', 'hello': 'world', 'he': 'world'}
: (:
"h"
burada) Ve tabii ki, kısa önekleri için zihni olası birçok çarpışmalarda var. Ayrıca bu iki anahtar aynı önekle başlıyorsa, bu durum odalara belirsizlikler bırakıyor. – HyperboreusBunu yapabilen veri yapıları vardır, ancak Python standart kitaplığında bulunmazlar. Örneğin, deneme veya ikili arama ağaçları. – delnan
Soru, hız ile ilgili olduğundan, 'dict_:' anahtarında 'dict_.keys(): 'anahtarından çok daha hızlı olduğunu belirtmek zorundayım. –