Sto lavorando a un progetto in cui ho bisogno di memorizzare una matrice di numeri indicizzati da due chiavi stringa. La matrice non è frastagliata, cioè se esiste una chiave di colonna per qualsiasi riga, allora dovrebbe esistere per tutte le righe. Allo stesso modo, se una chiave di riga esiste per qualsiasi colonna, dovrebbe esistere per tutte le colonne.Matrici associative?
Il modo ovvio per esprimere questo è con un array associativo di array associativi, ma questo è sia scomodo e inefficiente, e non impone la proprietà di non-jaggedness. Qualche linguaggio di programmazione popolare fornisce una matrice associativa incorporata nella lingua o come parte delle loro librerie standard? In tal caso, come funzionano, sia a livello di API che di implementazione? Sto usando Python e D per questo progetto, ma esempi in altri linguaggi sarebbero ancora utili perché sarei in grado di guardare l'API e capire il modo migliore per implementare qualcosa di simile in Python o D.
Sì, non conosco bene Python. Non ero consapevole del fatto che tu potessi fare questo, anche se ha senso col senno di poi dato che stai fondamentalmente usando le tuple come chiave. – dsimcha
funziona molto bene, ma userà più memoria per memorizzare i tasti che pensavo facessero parte di ciò che non volevi. Tuttavia, dovrebbe essere un po 'più veloce del metodo che ho suggerito, che richiederà l'hash table look-up per trovare gli indici della matrice prima di accedere alla matrice. Velocità o spazio: questa è la domanda. –
@Justin: È una buona idea, ma spero in una risposta migliore. Idealmente mi piacerebbe una matrice "reale", in cui posso ottenere tutte le righe per una singola colonna, o tutte le colonne per una singola riga, ecc., Non solo una soluzione alternativa. – dsimcha