Vorrei scrivere una funzione che riceva un dizionario come argomento di input e restituisce un retro del dizionario di input in cui i valori del dizionario originale vengono utilizzati come chiavi per il dizionario restituito e le chiavi del dizionario originale vengono utilizzate come valore per il dizionario ritornato come spiegato di seguito:Come invertire un dizionario in Python?
dict = {'Accurate': ['exact', 'precise'],
'exact': ['precise'],
'astute': ['Smart', 'clever'],
'smart': ['clever', 'bright', 'talented']}
a
dict = {'precise': ['accurate', 'exact'],
'clever': ['astute', 'smart'],
'talented': ['smart'],
'bright': ['smart'],
'exact': ['accurate'],
'smart': ['astute']}
l'elenco dei valori nel dizionario restituiti dovrebbero essere ordinati in ordine crescente. La maiuscola non ha importanza. Ciò significa che tutte le parole devono essere convertite in lettere minuscole. Ad esempio la parola "Accurate" è in maiuscolo nel dizionario originale ma nel dizionario restituito è scritta con tutte le lettere minuscole.
#My code is:
from collections import defaultdict
def reverse_dictionary(input_dict):
d = defaultdict(list)
for v,k in input_dict.items():
d[k].append(v)
return d
ma restituisce questo errore se:
Error in evaluating function:
TypeError at line 6
unhashable type: 'list'
Il problema è che non è possibile utilizzare alcun oggetto come chiave: questi oggetti devono essere immutabili, quindi il loro hash va lue non cambia dopo essere stati aggiunti al dizionario. Nel tuo caso, gli elenchi sono mutabili, quindi non possono essere usati come chiavi. Potresti invece convertirli in tuple. –
Benvenuti in StackExchange! Potrebbe essere utile dare più pensiero a questo problema. Ad esempio, perché "Accurato": ["esatto", "preciso"] "diventa" preciso ": [" preciso "," esatto "]" invece di "esatto": ["preciso", "preciso" '] '? Per quanto riguarda il tuo messaggio di errore, una lista non può essere la tua chiave dict, ma penso che il problema più grande sia che il tuo compito deve essere chiarito. –
Inoltre, i dizionari non possono essere ordinati. –