Ich bin daran interessiert, ein beliebiges Diktat zu nehmen und es in ein neues Diktat zu kopieren, es auf dem Weg zu mutieren.Fragen "ist hashable" über einen Python-Wert
Eine Mutation, die ich tun möchte, ist Schlüssel und Wert zu tauschen. Leider sind einige Werte selbstbestimmt. Dies erzeugt jedoch einen Fehler "nicht ausdehnbarer Typ: 'dict'". Es macht mir nichts aus, nur den Wert zu stringulieren und ihm den Schlüssel zu geben. Aber, ich möchte in der Lage sein, so etwas zu tun:
for key in olddict:
if hashable(olddict[key]):
newdict[olddict[key]] = key
else
newdict[str(olddict[key])] = key
Gibt es eine saubere Art und Weise, dies zu tun, dass nicht eine Ausnahme beinhalten Einfangen und Analysieren des Nachrichtenzeichenfolge für „unhashable Typ“ ?
Funktioniert das, wenn ein Tupel eine Liste/ein Wörterbuch enthält? –
Nein, und das können Sie nur zur Laufzeit feststellen, da zuvor der Inhalt einer Liste allgemein unbekannt ist. 'hash (([],))' gibt 'TypeError: nicht hashbarer Typ: 'list'' – Syncopated
Kleine Warnung für Leute, die Python 2.7 benutzen' isinstance (bytearray ([0xa]), collections.Hashable)) '' '' gibt '' zurück 'hash (bytearray ([0xa]))' scheitert mit 'TypeError: nicht hashbarer Typ: 'bytearray''. – RedX