Ich erhalte den FehlerTypeerror: 'Filter' Objekt ist subscriptable nicht
TypeError: 'filter' object is not subscriptable
Beim Versuch, den folgenden Codeblock
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 laufen tritt an der Linie
aufIch entschuldige mich, dass diese Art von Frage auf SO viele Male gepostet wurde, aber ich bin ziemlich neu in Python und verstehe Wörterbücher nicht vollständig. Versuche ich, ein Wörterbuch so zu verwenden, dass es nicht verwendet werden sollte, oder sollte ich ein Wörterbuch verwenden, in dem ich es nicht verwende? Ich weiß, dass die Lösung wahrscheinlich sehr einfach ist (wenn auch nicht für mich), und ich wäre sehr dankbar, wenn mir jemand in die richtige Richtung zeigen könnte.
Noch einmal, ich entschuldige mich, wenn diese Frage bereits
Dank beantwortet wurde,
Chris.
Ich benutze Python IDLE 3.3.1 unter Windows 7 64-Bit.
So frustrierend zu erinnern, wenn diese Sprache OO ist und wenn es verfahrens - warum nicht 'iterable.next()' statt 'next (iterable) '? – Basic
@Basic: '.next()' ist die Hook-Methode, 'next()' die API stdlib. Wie 'len()' vs. '.__ len __()', 'str()' vs. '.__ str __()' usw. In Python 3 wurde die '.next()' Methode in '.__ next __() umbenannt. '; Es war ein Fehler, ihm keinen speziellen Methodennamen zu geben. Mit 'next() '(die Funktion) können Sie auch einen Standardwert angeben, der zurückgegeben werden soll, wenn' StopIteration' ausgelöst wird. –