Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)Tratta il valore es["b"] come qualsiasi altra lista.
Names Default To Here( 1 );
ex = Associative Array();
ex["a"] = {"10"};
ex["b"] = {"20"};
ex["c"] = {"30"};
// Add new value to "b"
Insert Into( ex["b"], {"21"} );
Show( ex );Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)La risposta di Marco è la migliore. Puoi anche farlo così
ex["c"][nitems(ex["c"])+1]="99";
che è più brutto, più lento e meno conciso. Ma potrebbe suggerire altre possibilità. Gli elenchi hanno una interessante proprietà di sottoscrizione per uno oltre la fine che consente di estendere l'elenco di un elemento.
Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)In realtà sto usando qualcosa di più simile a questo, quindi immagino che mi manchi una valutazione della variabile:
Names Default To Here( 1 );
ex = Associative Array();
a_s = "a";
b_s = "b";
c_s = "c";
a_n = "10";
b_n = "20";
c_n = "30";
ex[a_s] = {a_n};
ex[b_s] = {b_n};
ex[c_s] = {c_n};
// Add new value to "b"
b_n = "21";
Insert Into( ex[b_s], {b_n} );
Show( ex );
// ex = ["a" => {a_n}, "b" => {b_n, b_n}, "c" => {c_n}];
Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)La definizione di elenco dice che non vengono valutati.
Elenco: crea un elenco di elementi senza valutarli.
Basta avvolgerli in evallist()
Names Default To Here( 1 );
ex = Associative Array();
a_s = "a";
b_s = "b";
c_s = "c";
a_n = "10";
b_n = "20";
c_n = "30";
ex[a_s] = Evallist({a_n});
ex[b_s] = Evallist({b_n});
ex[c_s] = Evallist({c_n});
// Add new value to "b"
b_n = "21";
Insert Into( ex[b_s], Evallist({b_n}) );<BR />// or you could this it seems easier.
// Insert Into( ex[b_s], b_n) ;<BR />
Show( ex );Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)Funziona, ma se una determinata chiave non esiste, non posso inserire nuovi elementi in essa.
Indipendentemente dal fatto che la chiave sia già presente o meno, esiste un modo semplice per introdurre una nuova chiave -> valore o inserire un nuovo valore?
Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)Penso che dovrai usare un'istruzione if per verificare se la chiave esiste e crearla in caso contrario. Di solito lo faccio creandolo con un elenco vuoto, quindi cado nel codice che aggiunge il nuovo elemento all'elenco esistente.Oggetto: Inserimento di valori aggiuntivi a chiavi esistenti in array associativi (dizionari di dati in JSL)Esempio completo, compreso il ovvio modo che fa non funzionare correttamente.
// I wish the default value for AA's worked correctly with a list for the
// default, but it does not:
aa = [=> {}];
Insert Into( aa["fred"], 1 );
Insert Into( aa["ralph"], 2 );
Show( aa ); // aa = [=> {1, 2}]; ?!?!?!?!
// so you must do an explicit test and create the key/list like this:
aa = [=> ];
For( i = 1, i <= 3, i += 1,
For Each( {key}, {"fred", "ralph"},
If( !(aa << Contains( key )), // key does not exist?
aa[key] = {};// add the key with an empty list
);
Insert Into( aa[key], i );// insert into list
)
);
Show( aa ); // aa = ["fred" => {1, 2, 3}, "ralph" => {1, 2, 3}];
Inserimento di valori aggiuntivi alle chiavi esistenti negli array associativi (dizionari di dati in JSL)Non riesco a trovare il metodo corretto per aggiungere nuovi valori alle chiavi esistenti negli array associativi.
Names Default To Here( 1 );
ex = Associative Array();
ex["a"] = {"10"};
ex["b"] = {"20"};
ex["c"] = {"30"};
<BR />// Add new value to "b"
ex["b"] = {"21"};
show(ex);
//ex = ["a" => {"10"}, "b" => {"21"}, "c" => {"30"}];
// Solution needed
//ex = ["a" => {"10"}, "b" => {"20", "21"}, "c" => {"30"}];Modellazione statistica avanzataMiscelazione e pulizia dei dati