2016-05-22 18 views
2

Ich habe zwei nicht eindeutigen Wertelisten, wieArbeiten mit Listen in Python

["a", "b", "a", "c"] 

und

["a", "b", "b", "f"] 

Ich möchte zu finden, welche Elemente der zweiten Liste erscheinen nicht in der zuerst.

Ich könnte dies von Hand codieren, würde aber lieber integrierte Funktionen verwenden. Ich kann nicht herausfinden, wie ich stolpere in die hashable/unashable Barriere. In diesem Fall

+0

Wenn Ihre Barriere ist, dass Ihre Werte nicht hashable sind, dann sagen Sie uns, was Ihre Werte sind, damit wir Ihnen helfen können, es zu umgehen. –

+0

Ich verstehe jetzt. Ich dachte, die Fehlermeldung bezog sich auf die kollektiven Objekte, nicht auf ihre Mitglieder. Vielen Dank. –

Antwort

8

wäre es

set(second_list) - set(first_list) 

sein, weil Strings hashable sind und Sie können sie in Gruppen setzen. Wenn Sie nicht-hashable Werte haben, dann sagen Sie uns, was sie sind, und wir können wahrscheinlich einen Workaround finden. Zum Beispiel:

  • Sie können eine Liste in ein Tupel konvertieren tuple(the_list) verwenden, können unter Verwendung von list(the_tuple) zurück.
  • Sie können einen Satz in ein Tupel umwandeln, indem Sie tuple(the_set) verwenden. Verwenden Sie dazu set(the_tuple).
  • Sie können eine verschachtelte Liste unter Verwendung von tuple(map(tuple, the_list)) und zurück unter Verwendung von list(map(list, the_tuple)) in ein verschachteltes Tupel konvertieren.
  • Sie können ein Wörterbuch unter Verwendung von tuple(the_dict.items()) und zurück unter Verwendung von dict(the_tuple) in ein verschachteltes Tupel konvertieren.
+0

Versuchte dies und es funktionierte. –

1

[x für x in ListB wenn x nicht in ListB]

ich denke, das eine ziemlich schnelle Art und Weise ist, dass Sie verwenden können.