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

Schreibe einen Kommentar