• ベストアンサー

Pythonでの属性による検索について

お世話になります。pythonによるコーディングを始めたばかりでつまづいています。  クラスを使って複数のインスタンスを作成しました。各インスタンスには4つの属性、A、B、C、Dがあるとします。このときに例えば属性A=1、属性B=0、属性C=1を同時に満足するインスタンスを検索して、そのインスタンスの属性Dの値を取得したいのですが、どのようにすればよいのでしょうか。御指南いただけませんでしょうか。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.1

listとfilterとlambdaを使ってこんな感じ。list l1にappendしたFooのインスタンスの中で条件を満たすものがlist l2になります。条件を満たすインスタンスが複数ある場合も考慮しています。 class Foo:  def __init__(self, a, b, c, d):   self.a = a   self.b = b   self.c = c   self.d = d l1 = list() l1.append(Foo(1, 1, 1, 11)) l1.append(Foo(1, 0, 1, 12)) l1.append(Foo(1, 0, 1, 13)) l1.append(Foo(0, 0, 1, 14)) l2 = filter(lambda x: x.a == 1 and x.b == 0 and x.c == 1, l1) for obj in l2:  print(obj.d) 実行結果 12 13 OKWAVEの都合により字下げ部分には全角空白を使っているので、書き換えないと動かせないことに注意。

kujirunner
質問者

お礼

回答頂きました通りにやってみたら、上手くいきました。どうもありがとうございました。

関連するQ&A