Un hash può avere chiavi o valori duplicati?Un hash può avere chiavi o valori duplicati
risposta
può avere valori duplicati ma non chiavi.
Sto inoltrando un incarico basato sul tuo 14.5k rep haha, debitamente citato, ma se dovessimo probabilmente verrai a conoscenza del mio docente tra un po 'di tempo ... – lol
Supponendo parlando di un "hash%"
Poi:
- chiavi duplicate non ammessi.
- Valori duplicati consentiti.
Questo è facile ragionare su perché è una mappatura di un particolare chiave per un particolare valoredove il valore non svolge alcun ruolo nel look-up ed è quindi indipendente su altri valori.
Per entrambi gli hash e gli array, è possibile memorizzare solo uno scalare su una determinata chiave. ("Le chiavi sono uniche.") Se non lo fossero, non si poteva fare
$h{a} = 1;
$h{a} = 2;
$val = $h{a}; # 2
$a[4] = 1;
$a[4] = 2;
$val = $a[4]; # 2
Se si voleva associare più valori a una chiave, è possibile inserire un riferimento ad un array (o hash) a quella chiave e aggiungere il valore a tale array (o hash).
for my $n (4,5,6,10) {
if ($n % 2) {
push @{ $nums{odd} }, $n;
} else {
push @{ $nums{even} }, $n;
}
}
say join ', ', @{ $nums{even} };
Vedere perllol per ulteriori informazioni.
Come per i valori, più elementi possono avere lo stesso valore in entrambi gli hash e gli array.
$counts{a} = 3;
$counts{b} = 3;
$counts[5] = 3;
$counts[6] = 3;
Si può provare a utilizzare il modulo Hash::MultiKey da CPAN.
(ho usato Data :: Dumper per mostrare come hash è esattamente sembra - non è necessario qui)
use Data::Dumper;
use Hash::MultiKey;
tie my %multi_hash, 'Hash::MultiKey';
$multi_hash{['foo', 'foo', 'baz']} = "some_data";
for (keys %multi_hash) {
print @$_,"\n";
};
print Dumper\%multi_hash;
E l'uscita shoud essere():
foofoobaz
$VAR1 = {
'ARRAY(0x98b6978)' => 'some_data'
};
Quindi tecnicamente parlando Hash :: MultiKey ti consente di creare un riferimento come chiave hash.
Si prega di provare ed eseguire questo codice, viene eseguito senza errori. Spero che questo sia quello che stavi chiedendo!
#!/usr/bin/perl
use strict;
use warnings;
my %hash = ('a' => 1, 'a' => 2, 'b' => 4);
print values %hash, "\n\n";
print keys %hash, "\n\n";
Sì un hash può avere chiavi duplicate, come dimostro qui di seguito ...
esempio chiave: Data di nascita | LastNameFirst4Chars | FirstNameInitial | IncNbr "1959/12/19 | Will | K | 1". .. "1959-12-19 | Will | K | 74".
Nota: Questa potrebbe essere una chiave utile per la registrazione look up se qualcuno non si ricordava loro Nbr sicurezza sociale
#-- CODE SNIPPET:
@Offsets=(); #-- we will build an array of Flat File record "byte offsets" to random access
#-- for all records matching this ALT KEY with DUPS
for ($i=1; $i<=99; $i++) {
$KEY=$BirthDate . "|" . $LastNameFirst4Chars . "|" . $FirstNameInitial . "|" . $i;
if (exists $Hash{$KEY}) {
push @Offsets, $Hash{$KEY}; #-- add another hash VALUE to the end of the array
}
}
Cosa dimostra questo? Dopo che il codice è stato eseguito, sia '@ Offset' che'% Hash' sono invariati (vale a dire ancora vuoti). Il codice genera semplicemente 99 valori _differenti per la variabile '$ KEY', come' blabla | 1', 'blabla | 2', ...' blabla | 99'. – PerlDuck
Ok, ma gli hash standard in Perl non possono sicuramente avere chiavi duplicate. Le chiavi del tuo esempio sono tutte diverse. '" $ BirthDate | ... | 1 "' è diverso da '" $ BirthDate | ... | 2 "', no? Quindi le chiavi sono _non_ duplicate. – PerlDuck
PerlDuck, il numero di sequenza rende la chiave univoca. Se ho una chiave primaria unica, diciamo il numero di previdenza sociale. E voglio accedere a un record nel mio database, ma il SSN non viene ricordato, quindi posso usare un ALT KEY con DUPS come: "$ BirthDate | $ LastNameFirst4Chars | $ FirstNameInitial | SeqNbr". "1959-12-19 | Will | K | 1 ..." 1959-12-19 | Will | K | 99 ". Tutti i dati nel KEY sono duplicati tranne per il numero di sequenza. Ecco come abilitare un hash avere chiavi duplicate. –
- 1. Un set può avere elementi duplicati?
- 2. chiavi di hash/valori come array di
- 3. Scambio di chiavi e valori in un hash
- 4. Puoi avere tabelle hash in lisp?
- 5. Estrarre valori duplicati da un dizionario
- 6. Dovrei avere valori duplicati in oggetti di classe VBA?
- 7. Il console può supportare un grande archivio di chiavi/valori
- 8. Coppie come chiavi hash
- 9. Non assegnare valori nulli a un hash
- 10. Un elemento HTML può avere attributi arbitrari?
- 11. Inversione un hash più valori in Perl
- 12. Come avere una combinazione di chiavi primarie che potrebbe avere valori nulli?
- 13. Hibernate, ottenendo valori duplicati
- 14. Un elemento HTML può avere lo stesso attributo due volte?
- 15. RSpec: confronto di un hash con chiavi stringa contro un hash con i tasti simbolo?
- 16. Conversione di un array di chiavi e una serie di valori in un hash in Ruby
- 17. Ordinamento un hash per valore, quando ha molte chiavi
- 18. std, boost o altra implementazione diffusa di un contenitore tabella hash con chiavi implicite
- 19. Quanto si può troncare un hash SHA1 ed essere ragionevolmente sicuri di avere un ID univoco?
- 20. PHP - i valori duplicati di un array
- 21. Come evitare i valori duplicati in enum?
- 22. Combinazione di valori hash MD5
- 23. Iterate hash nidificato che contiene hash e/o Array
- 24. Come inserire chiavi e valori in un hash vuoto con Ruby?
- 25. Quali valori può avere l'attributo etichetta aria HTML5?
- 26. Utilizzo di numeri interi come chiavi hash
- 27. unione di hash rubino con array di valori in un altro hash con array di valori
- 28. Un delegato può avere un parametro opzionale?
- 29. Un file CSV può avere un commento?
- 30. Quali caratteri sono validi nelle chiavi hash?
Forse cercavi tabella hash? –
Oh non mi sono reso conto che l'hash è il nome di Perl per gli array associativi (strano). –
@Jake T.Gli array associativi Perl sono tabelle hash – ikegami