2016-11-18 2 views
-1

Ich versuche, eine String-Liste zu überspringen, die ersten beiden Strings zu überspringen und dann 1 durch '' in den verbleibenden Strings in der Liste zu ersetzen.Python-Fehler: TypeError: nicht hashbarer Typ: 'list' beim Loopen der Liste

stringList = {['abc', 'def', 'ghi1', 'jkl1']} 
xx = [col.replace('1', '') for col in stringList if col not in stringList[1:2]] 
print(xx) 

Mein Code löst diesen Fehler:

TypeError: unhashable type: 'list'

Ich möchte xx eine Liste der gleich: 'ghi', 'jkl'

Wie kann ich das tun?

+3

Sie eine Liste in einem Satz setzen: '{[ 'abc', 'def', 'ghi1', 'jkl1']}'. Sie können das nicht tun, da eine Liste nicht hashbar ist und Sets erfordern, dass alle Inhalte hashbar sind. Warum benutzen Sie beide '{..}' (Sätze und Wörterbücher) und '[..]' (Listen) dort? –

+0

Mit anderen Worten, die nächste Zeile wird nie erreicht. Die Rückverfolgung hätte dir das gesagt. –

+1

Wow, wie albern von mir, habe ich die Lockvögel komplett ignoriert. Vielen Dank! – user1013388

Antwort

2

In Python müssen Sets Elemente enthalten, die durchsucht werden können (siehe Python glossary). Eine Liste ist nicht hashbar, aber ein Tupel ist. Wenn es immer noch Ihren Zweck dient, können Sie ein Tupel statt einer Liste verwenden:

stringList = {('abc', 'def', 'ghi1', 'jkl1')} 

Sie sollten versuchen, die Fehlermeldungen mehr sorgfältig zu lesen. Der Fehler-Trace hätte Ihnen gesagt, welche Zeile den Fehler verursacht hat. Außerdem beschwert sich die Nachricht selbst über Listen, von denen es in Ihrem Beispiel nur 2 gibt.

+1

Das OP scheint eine Liste mit Strings zu erwarten, keine Menge mit einem Tupel. –

1

Der folgende Code druckt ['ghi', 'jkl']

Ist das, was Sie wollen?

stringList = ['abc', 'def', 'ghi1', 'jkl1'] 
xx = [col.replace('1', '') for col in stringList if col not in stringList[0:2]] 
print(xx) 

Als Martijn Pieters im Kommentar sagte, setzen Sie eine Liste ['abc', 'def', 'ghi1', 'jkl1'] innerhalb eines Satzes.

A set object is an unordered collection of distinct hashable objects. Common uses include membership testing, removing duplicates from a sequence, and computing mathematical operations such as intersection, union, difference, and symmetric difference.

Python Set Documentation

Verwandte Themen