Wolna encyklopedia

Tablica asocjacyjna (mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikalny klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza.

Formalnie typ tablicy asocjacyjnej odpowiada zbiorowi skończonych funkcji częściowych z typu klucza tablicy w typ wartości tablicy. Wiele złożonych danych jest naturalnie reprezentowanych przez tego typu tablice - np. drzewa plików, nagłówki poczty, nawet wszystkie atrybuty obiektu czy przestrzeń nazw zmiennych.

Tablice asocjacyjne realizowane są jako drzewa poszukiwań (BST, AVL, trie itp.) lub tablice mieszające. 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.

Spis treści

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 z kluczami powiązane są listy wartości 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ć:

Tablice asocjacyjne w różnych językach programowania

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"];

PHP

 $tablica = array("klucz" => "wartosc", 
                  "nowy_klucz" = 2)

Perl

 $tablica_asocjacyjna{"nazwa_elementu"}
 %kolejna_tablica_asocjacyjna = (apple  => "red", banana => "yellow", );

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
 
 # wypisanie wszystkich wartości z tablicy
 for wartosc in tablica.itervalues():
 	print wartosc
 
 # 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"]
 
 print tablica.get("Wikipedia", "brak klucza 'Wikipedia'")

Zobacz też

Źródło: „haslo,Tablica_asocjacyjna