は、だから私は、このクラスを持っているとしましょう:Pythonの別々の重複オブジェクト別のリストに
class Spam(object):
def __init__(self, a):
self.a = a
そして今、私は、これらのオブジェクトを持っている:
s1 = Spam((1, 1, 1, 4))
s2 = Spam((1, 2, 1, 4))
s3 = Spam((1, 2, 1, 4))
s4 = Spam((2, 2, 1, 4))
s5 = Spam((2, 1, 1, 8))
s6 = Spam((2, 1, 1, 8))
objects = [s1, s2, s3, s4, s5, s6]
ので、この方法のいくつかの種類を実行した後、私が必要1つのリストに同じa
属性値を持つオブジェクトと、固有のa
属性を持つオブジェクトを持つ2つのリストを持つことができます。
dups = [s2, s3, s5, s6]
normal = [s1, s4]
だから、重複を取得のようなもので、それに加えて、それはまた同じa
属性値を共有するオブジェクトのも、最初のオカレンスを追加する必要があります。このよう
。
私はこの方法を書いており、機能しているようですが、私の意見ではかなり醜いです。
def eggs(objects):
vals = []
dups = []
normal = []
for obj in objects:
if obj.a in vals:
dups.append(obj)
else:
normal.append(obj)
vals.append(obj.a)
dups_vals = [o.a for o in dups]
# separate again
new_normal = []
for n in normal:
if n.a in dups_vals:
dups.append(n)
else:
new_normal.append(n)
return dups, new_normal
誰もがこのような問題に対してより適切なパイソン法を書くことができますか?
これは私を投げているようだ 'TypeError例外:それは私の端にありますが「スパム」オブジェクトは、私は疑問に思う' を添字化されていない私は時間があるとき、それになりますあなたの 'except_at'関数 – MooingRawr
私の謝罪!間違った変数を 'except_at'に渡しました。修正しました。 –