2016-05-31 1 views
-1

コレクションの配列のフィールドを関数に渡して、コレクション内の要素にpythonでアクセスできるようにする方法がありますか?私は特定のアイテムを識別子と比較することで、コレクションの配列を検索しようとしています。比較されるこの識別子およびフィールドは、関数がプログラムの異なる段階で呼び出されると変化する。比較のために必要な要素にアクセスするために、関数にフィールドを渡す方法がありますか? これは私が今まで試したコードです: ​​コレクションの配列のフィールドをPythonの関数に渡す

+0

"コレクションの配列のフィールド" Phew、あなたはあなたの質問を編集して、あなたがしようとしているものの例を含めることができますか? –

+0

ヒント:グラフィックファイルにコードを入れると、おそらくこれが役立ちます:https://xkcd.com/1685/ –

+1

あなたが望むものを完全に理解することはできませんが、おそらく[getattr](https:// docs .python.org/3/library/functions.html#getattr) – syntonym

答えて

0

あなたのコードでは、がリストです。リストは、インデックスと次の構文を使用してアクセスされます。myList[index]。あなたの場合、それはM_work[place]になります。次に、はフィールドを持つオブジェクトを格納し、これらのフィールドの1つに名前でアクセスしたいとします。これを行うには、getattrgetattr(M_work[place], field)のように使用してください。戻り値をidentifierと比較することができます。あなたが表示されたコードで

その他の過ち:

  • place一点paceをスペルミスしています。
  • Trueのスペルはtrueです。
  • ループのボディは、最初の繰り返しで常に返されます。if found == Trueelseブランチの両方にreturnがあります。私はこれがあなたが望むものだとは思わない。 if found == Trueif foundと同等であることに気づい

    次の方法で、あなたのコードを向上させることができます。

  • found変数を実際に必要としない方法を見つける。
  • Python's for...in loopを見てください。
+0

ありがとうございました!、うまくいきました。あなたの提案により、私のコードを非常に単純化することができました。ありがとうございました。 –

関連する問題