SORU
25 Mayıs 2010, Salı


Python:'doğru ve iyi bir şekilde __uygulamak için Ne kadar karma__()?

__hash__() uygulamak için doğru ve iyi bir yolu nedir?

Sonra hashtables takın nesneler için kullanılan bir hashcode aka sözlükler verir işlevi bahsediyorum.

__hash__() bir tamsayı döndürür ve "" döndürülen tamsayı değerleri eşit ortak veri için dağıtılması gerektiğini sanıyorum hashtables (çarpışmaları en aza indirmek için).nesneleri binning için kullanılır gibi Bu değerleri elde etmek için iyi bir uygulama nedir? Çarpışmalar bir sorun var mı? Benim durumumda bir kapsayıcı sınıfı bazı değer vermez holding gibi davranan, yüzen küçük bir sınıf ve bir dize var.

CEVAP
25 Mayıs 2010, Salı


, __hash__() uygulanması kolay doğru bir şekilde anahtar bir dizi kullanmaktır. Hızlı olarak özel bir karma olmayacak, ama eğer ihtiyacınız varsa, o zaman muhtemelen C tipi uygulamak gerekir

İşte karma budur: bir anahtar kullanarak bir örnek

class A(object):
    def __key(self):
        return (self.attr_a, self.attr_b, self.attr_c)

    def __eq__(x, y):
        return x.__key() == y.__key()

    def __hash__(self):
        return hash(self.__key())

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • DONFANTASTICKYPESS

    DONFANTASTIC

    1 Temmuz 2007