Bene, la domanda è nel titolo: come definisco un dizionario python con chiavi immutabili ma valori mutabili? Sono venuto con questo (in python 2.x):Definire un dizionario python con chiavi immutabili ma valori mutabili
class FixedDict(dict):
"""
A dictionary with a fixed set of keys
"""
def __init__(self, dictionary):
dict.__init__(self)
for key in dictionary.keys():
dict.__setitem__(self, key, dictionary[key])
def __setitem__(self, key, item):
if key not in self:
raise KeyError("The key '" +key+"' is not defined")
dict.__setitem__(self, key, item)
, ma sembra a me (com'era prevedibile) piuttosto sciatta. In particolare, questo è sicuro o c'è il rischio di cambiare/aggiungere effettivamente alcune chiavi, dal momento che sto ereditando da Dict? Grazie.
Beh, qualcuno potrebbe presumibilmente chiamare "dict .__ setitem __()" su un'istanza di 'FixedDict', no? – cdhowie
Dovresti controllare che 'dict.update' chiami' __setitem__' - Sebbene, anche se così fosse, non sono sicuro che dipenda dall'implementazione ... – mgilson
('update' ignora' __setitem__') – katrielalex