[Python] Operazioni sui Dizionari
La domanda sarà sicuramente banale per molti ma non trovo soluzione. Potreste illuminarmi?
Sto cercando di creare un dict() o di aggiungere i duplicati ad uno esistente ma null.
E' possibile che il dizionario non accetti i duplicati?
C'è un modo?
Temporaneamente ho creato due liste : uno dei keys e uno dei values per non perdere le informazioni.
Sul web trovo solo come eliminare i duplicati ma non come aggiungerli.
Ho provato a creare una dict(zip(list_keys, list_values)) ma i duplicati vengono perduti.
Ho provati a creare una dict2[keys]=(values) per poi provare ad aggiungerlo in questo modo al dict precendente : dict(dict1.items() + dict2.items()) ma dict2 perde i duplicati.
Grazie
Sto cercando di creare un dict() o di aggiungere i duplicati ad uno esistente ma null.
E' possibile che il dizionario non accetti i duplicati?
C'è un modo?
Temporaneamente ho creato due liste : uno dei keys e uno dei values per non perdere le informazioni.
Sul web trovo solo come eliminare i duplicati ma non come aggiungerli.
Ho provato a creare una dict(zip(list_keys, list_values)) ma i duplicati vengono perduti.
Ho provati a creare una dict2[keys]=(values) per poi provare ad aggiungerlo in questo modo al dict precendente : dict(dict1.items() + dict2.items()) ma dict2 perde i duplicati.
Grazie
Risposte
Un dizionario ha per definizione un solo valore per ogni chiave. Come dovrebbe apparire il tuo dizionario dopo l'aggiunta dei duplicati? In linea di massima se vuoi duplicati, un [tt]dict[/tt] NON è la struttura di dati corretta. Quello che puoi fare è forse avere una lista per ogni chiave del dizionario ma per aggiungere i valori dovresti forse fare qualcosa come segue:
La sottoclasse [tt]defaultdict[/tt] di [tt]dict[/tt] chiama una funzione per creare un nuovo valore di default nel caso in cui si cerchi di accedere ad un elemento non presente nel dizionario. Usando [tt]dict[/tt] sarebbe stato necessario scrivere qualcosa come:
from collections import defaultdict #... d = defaultdict(list) for k, v in zip(keys, values): d[k].append(v)
La sottoclasse [tt]defaultdict[/tt] di [tt]dict[/tt] chiama una funzione per creare un nuovo valore di default nel caso in cui si cerchi di accedere ad un elemento non presente nel dizionario. Usando [tt]dict[/tt] sarebbe stato necessario scrivere qualcosa come:
d = dict() for k, v in zip(keys, values): if k in d: d[k].append(v) else: d[k] = [v]
Ciao Grazie!
Ho risolto poi con le liste in questo modo:
Volevo capire se ci fosse un modo che non conoscevo o se proprio non si potesse fare
Ho trovato diversi tipi di dizionari e poi... ho trovato diverse guide su come eliminare i doppioni o unificare per chiave, per cui mi è sorto il dubbio .
Sono ancora alle prime armi
Grazie mille per la conferma!
Ho risolto poi con le liste in questo modo:
eBC è un dizionario contenete le keys e i values presi una sola volta kk è la lista contenente le sole keys con doppioni for j in kk: if j in eBC: k_kk.append(( j, eBC[j] )) else: k_kk.append(( j, eBC[(j[1], j[0])] ))
Volevo capire se ci fosse un modo che non conoscevo o se proprio non si potesse fare

Ho trovato diversi tipi di dizionari e poi... ho trovato diverse guide su come eliminare i doppioni o unificare per chiave, per cui mi è sorto il dubbio .
Sono ancora alle prime armi

Grazie mille per la conferma!