Tablica asocjacyjna
Z Wikipedii
Tablica asocjacyjna (mapa, słownik, ang. associative array, map, dictionary, hash table) – nazwa dla powszechnie stosowanej w informatyce grupy struktur danych, które przechowują pary (unikalny klucz, wartość), a dostęp do danej następuje przez podanie klucza. Typ danych klucza może być praktycznie dowolny, najczęściej są to łańcuchy znaków (napisy), ale także liczby (całkowite, zmiennoprzecinkowe, zespolone), krotki itp.
Wiele złożonych danych jest naturalnie reprezentowanych przez tego typu tablice - np. drzewa plików, nagłówki poczty, a nawet wszystkie atrybuty obiektu czy przestrzeń nazw zmiennych.
Tablice asocjacyjne realizowane są jako drzewa poszukiwań (BST, AVL, trie, RST itp.) lub tablice mieszające.
Spis treści |
[edytuj] Cechy tablic asocjacyjnych
Najczęściej próba przypisania wartości do nieistniejącego klucza powoduje automatyczne utworzenie klucza i wówczas następuje zwykłe przypisanie.
Na ogół przypisanie nowej wartości do istniejącego klucza zastępuje poprzednią wartość, ale np. w języku Ocaml wartości są listami i przypisanie wartości do klucza powoduje tak naprawdę dopisanie jej na początek listy.
Sięgnięcie do nieistniejącego klucza zwykle kończy się błędem, ale np. w języku AWK zwracany jest pusty łańcuch znaków.
Istniejące implementacje tablic asocjacyjnych, bądź to dostępne bezpośrednio w danym języku programowania, bądź jako oddzielna biblioteka programistyczna na ogół oferują większą funkcjonalność niż tylko przypisanie wartości do klucza i pobranie wartości. Może to być:
- usunięcie pary (klucz, wartość);
- stwierdzenie, czy dany klucz znajduje się w tablicy (bez pobierania wartości);
- pobranie listy wszystkich kluczy lub przynajmniej możliwość iterowania po niej;
- pobranie listy wszystkich wartości;
- pobranie listy wszystkich par (klucz, wartość).
[edytuj] Tablice asocjacyjne w różnych językach programowania
[edytuj] AWK
W języku AWK tablica asocjacyjna nazywana jest tablicą (array). Kluczem może być pojedyncze wyrażenie (zamieniane zawsze na łańcuch znaków), albo lista wyrażeń, które są sklejane razem, a ciąg je separujący jest określony przez zmienną SUBSEP.
tablica["Wikipedia"] = "Wolna encyklopedia";
tablica[10, 12, 2006] = "środa";
tablica[255] = 0xff;
if ("Wikipedia" in tablica)
print tablica["Wikipedia"];
[edytuj] PHP
$tablica = array("klucz" => "wartosc",
"nowy_klucz" = 2)
[edytuj] Perl
$tablica_asocjacyjna{"nazwa_elementu"}
%kolejna_tablica_asocjacyjna = (apple => "red", banana => "yellow", );
[edytuj] Python
W języku Python tablice są nazywane słownikami (dictionary, dict). Kluczem może być dowolny obiekt, która posiada metodę __hash__. Jeśli chodzi o typy wbudowane, jako klucze mogą służyć liczby całkowite, zmiennoprzecinkowe, zespolone, łańcuchy znaków (zwykłe i unikodowe), niemodyfikowalne zbiory (immutable sets), krotki, a nawet funkcje. Natomiast listy, modyfikowalne zbiory ani słowniki nie mogą być kluczami.
tablica = {"Wikipedia": "Wolna encyklopedia",
(10, 12, 2006): "środa",
255: 0xff}
# wypisanie wszystkich kluczy z tablicy
for klucz in tablica:
print klucz
# lub ekwiwalent (szybszy): print "\n".join(tablica.keys())
# wypisanie wszystkich wartości z tablicy
for wartosc in tablica.itervalues():
print wartosc
#lub ekwiwalent (szybszy): print "\n".join(tablica.values())
# wypisanie jakie wartości są przypisane do jakich kluczy
for klucz, wartosc in tablica.iteritems():
print klucz, '=>', wartosc
# wyświetlenie wartości związanej z kluczem (łańcuchem) "Wikipedia"
if "Wikipedia" in tablica:
print tablica["Wikipedia"]
[edytuj] Zobacz też
| Określono temperaturę u początku Wszechświata |
|
Rejestracja molekuł wodoru i czadu w galaktyce oddalonej od nas o 11.5 miliarda lat świetlnych pozwoliło na określenie ówczesnej temperatury Wszechświata - informują strony internetowe European Southern Observatory (ESO).
|
| W Australii zostanie wybitych 400 kangurów |
|
Rząd Australii zapowiedział, że wznowi wybijanie 400 kangurów szarych, zawieszone w kwietniu po protestach grup ekologicznych, do których przyłączył się Paul McCartney.
|
| Noc Muzeów w całej Polsce |
|
Ponad 120 galerii i muzeów otwartych będzie w stolicy z soboty na niedzielę - w tegoroczną Noc Muzeów; swoje drzwi dla zwiedzających otworzą także muzea m.in. w Krakowie, Zakopanem, Trójmieście, Słupsku, Sandomierzu, Łodzi i Kazimierzu Dolnym.
|
| Geny mogą odpowiadać za naszą skłonność do słodkości |
|
Wariant genu odpowiedzialnego za transport glukozy do wnętrza komórek wpływa na preferencje ludzi do jedzenia słodyczy - zaobserwowali naukowcy z Kanady. Artykuł na ten temat zamieściło pismo "Physiological Genomics".
|
| Zwierzęta "ostrzegały" przed trzęsieniem w Chinach |
|
Najpierw w niewytłumaczalny sposób spadał poziom wody w stawie i na ulice wyległy tysiące ropuch. Na kilka godzin przed trzęsieniem ziemi zwierzęta w zoo zachowywały się dziwnie.
|