Article View: pl.comp.lang.python
Article #27188Re: Python a hashmapa
From: wodzik
Date: Sat, 09 Jan 2010 22:15
Date: Sat, 09 Jan 2010 22:15
46 lines
3128 bytes
3128 bytes
On 2010-01-09 22:28, Jan Kaliszewski wrote:
> "Hashmapa" to jakiś potworek językowy. Po polsku na ogół mówimy o
> tablicy mieszającej (lub haszującej), bądź ogólniej o tablicy
> asocjacyjnej lub słowniku -- ang. dictionary,
Tak wiem, ale już się jakoś do niego przyzwyczaiłem. Nawet część
prowadzących używa tej nazwy ;)
> Podobną do słowników strukturą są w Pythonie zbiory (set). Można je
> traktować jako słowniki z samymi kluczami (bez wartości) + wygodnymi
> metodami do typowych operacji na zbiorach.
Będzie się trzeba dokształcić z zbiorów.
> A według jakiego kryterium określasz "tożsamość" elementów w
> dotychczasowym rozwiązaniu opartym na listach? Bo jeżeli wg tożsamości
> (id) samego obiektu (lub równości, gdy nie jest specjalnie definiowana,
> co również oznacza test tożsamości), to prawdopodobnie nie musisz żadnej
> specjalnej funkcji pisać -- zastąp listy zbiorami i już [test ,,x in
> set'' daje średnio O(1)].
Sprawdzam czy są na liście czymś w stylu: "if (not tmp in self.dzieci) &
(not tmp in self.rozpatrzone):", a funkcja do porównania wygląda tak:
def __cmp__(self,plansza):
if isinstance(plansza, Plansza):
tmp = cmp(self.h, plansza.h)
if tmp:
return tmp
return cmp(self.tablica, plansza.tablica)
else:
return cmp(self.h, plansza)
Bo za pomocą zwykłego porównania porównuje chyba samo id obiektu, a tu
chodziło o to, że ma sprawdzić czy h jest takie samo, a jeśli tak
porównać jeszcze tablice. W ogóle zastanawiam się jak zrobić, żeby z
zbioru wyciągał najpierw obiekty o jak najmniejszym h. Na liście daje
jakieś sortowanie przy wstawianiu i problem z głowy. Przy zbiorach chyba
by dać listę zbiorów, a w każdym elementy o innym h. Sprawdziło by się
takie co, czy macie inne pomysły?
> Pozdr.
> *j
Pozdrawiam wodzik
Technical Details
Message-ID:
<hiav57$7cf$1@zeus.man.szczecin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.szczecin.pl!not-for-mailReferences:
<hi9a48$c1b$1@zeus.man.szczecin.pl> <20100109102348.d563af8e.natural-born-killer@dontmailme.com> <hi9nmc$iqv$1@zeus.man.szczecin.pl> <hi9rbf$1ke$2@solani.org> <hiapsg$4mg$1@zeus.man.szczecin.pl> <op.u6aa9spdfvx12t@jerzozwiesz.home.aster.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.szczecin.pl!not-for-mail From: wodzik <wodzik@noreply.com> Newsgroups: pl.comp.lang.python Subject: Re: Python a hashmapa Date: Sat, 09 Jan 2010 23:15:10 +0100 Organization: ACI - http://www.aci.com.pl Lines: 46 Message-ID: <hiav57$7cf$1@zeus.man.szczecin.pl> References: <hi9a48$c1b$1@zeus.man.szczecin.pl> <20100109102348.d563af8e.natural-born-killer@dontmailme.com> <hi9nmc$iqv$1@zeus.man.szczecin.pl> <hi9rbf$1ke$2@solani.org> <hiapsg$4mg$1@zeus.man.szczecin.pl> <op.u6aa9spdfvx12t@jerzozwiesz.home.aster.pl> NNTP-Posting-Host: 212.14.0.154 Mime-Version: 1.0 X-Trace: zeus.man.szczecin.pl 1263075304 7567 212.14.0.154 (9 Jan 2010 22:15:04 GMT) X-Complaints-To: usenet@news.man.szczecin.pl NNTP-Posting-Date: Sat, 9 Jan 2010 22:15:04 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 In-Reply-To: <op.u6aa9spdfvx12t@jerzozwiesz.home.aster.pl> X-Antivirus: avast! (VPS 100109-0, 2010-01-09), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit