エラーが表示されます
TypeError: 'filter' object is not subscriptable
次のコードブロックを実行しようとすると
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())
と
sheet_new = []
bonds_new = []
old_to_new = {}
sheet=[]
bonds=[]
行でエラーが発生します
bond[bond_index] = old_to_new[sheet.index(image[0]) + 1 ]
この種の質問がSOに何度も投稿されたことをお詫びしますが、私はPythonにかなり慣れていないため、辞書を完全には理解していません. 使用すべきではない方法で辞書を使用しようとしていますか、または使用していない辞書を使用する必要がありますか? 修正はおそらく非常に簡単であることを知っています(私にはわかりませんが)。誰かが私を正しい方向に向けることができれば、とても感謝しています。
繰り返しますが、この質問がすでに回答されている場合はお詫び申し上げます
ありがとう、
クリス。
Windows 7 64 ビットで Python IDLE 3.3.1 を使用しています。