TypeError: Das Objekt 'filter' ist nicht einfügbar
Ich erhalte die Fehlermeldung
TypeError: 'filter' object is not subscriptable
Beim Versuch, führen Sie den folgenden code-block
bonds_unique = {}
for bond in bonds_new:
if bond[0] < 0:
ghost_atom = -(bond[0]) - 1
bond_index = 0
elif bond[1] < 0:
ghost_atom = -(bond[1]) - 1
bond_index = 1
else:
bonds_unique[repr(bond)] = bond
continue
if sheet[ghost_atom][1] > r_length or sheet[ghost_atom][1] < 0:
ghost_x = sheet[ghost_atom][0]
ghost_y = sheet[ghost_atom][1] % r_length
image = filter(lambda i: abs(i[0] - ghost_x) < 1e-2 and
abs(i[1] - ghost_y) < 1e-2, sheet)
bond[bond_index] = old_to_new[sheet.index(image[0]) + 1 ]
bond.sort()
#print >> stderr, ghost_atom +1, bond[bond_index], image
bonds_unique[repr(bond)] = bond
# Removing duplicate bonds
bonds_unique = sorted(bonds_unique.values())
Und
sheet_new = []
bonds_new = []
old_to_new = {}
sheet=[]
bonds=[]
Der Fehler tritt bei der Zeile
bond[bond_index] = old_to_new[sheet.index(image[0]) + 1 ]
Entschuldige ich mich, dass diese Art von Frage schon gepostet hat auf SO viele Male, aber ich bin ziemlich neu in Python und nicht vollständig verstehen, Wörterbücher. Bin ich versucht, verwenden Sie ein Wörterbuch in einer Art und Weise, in denen es nicht verwendet werden sollte, oder soll ich mich mit einem Wörterbuch, wo ich bin nicht, es zu benutzen?
Ich weiß, dass die Lösung wahrscheinlich sehr einfach (wenn auch nicht für mich), und ich werde sehr dankbar, wenn jemand könnte mich in die richtige Richtung.
Wieder einmal, ich entschuldige mich, wenn diese Frage wurde bereits beantwortet
Dank,
Chris.
Ich bin mit Python-IDLE 3.3.1 unter Windows 7 64-bit.
InformationsquelleAutor der Frage Christopher John Scott | 2013-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
filter()
in python 3 hat nicht gibt eine Liste, aber ein iterierbarfilter
Objekt. Rufen Sienext()
auf die ersten gefilterten Objekt:Gibt es keine Notwendigkeit, es zu konvertieren, um eine Liste, wie Sie nur den ersten Wert.
InformationsquelleAutor der Antwort Martijn Pieters
Verwenden
list
vorfilter
Zustand dann funktioniert es einwandfrei. Für mich ist es das Problem behoben hat.Beispielsweise
statt
InformationsquelleAutor der Antwort K Kotagaram
InformationsquelleAutor der Antwort DKZ