あなただけの通常の命名体系与え一緒にデータフィールドをバインドするために欠けている場合は、namedtuple
は偉大な動作します。 「あなたの場合、またはループのためにPythonで、他のほとんど何も使ってしまう
from collections import namedtuple
# namedtuple is actually a class-factory:
Student = namedtuple("Students", ['id','firstname','lastname','password'])
# notice i'm using a plain tuple as a container - again, we want immutability
# for a functional approach
students = (
Student(id=1, firstname='Rick', lastname='Sanchez', password='rickkyticky'),
Student(id=2, firstname='Morty', lastname='Smith', password='password'),
Student(id=3, firstname='Summer', lastname='Smith', password='tinkles')
)
あなたはあなたのようなこのを反復処理することができます:それはあなたが純粋に機能的なアプローチを維持しようとしている場合は、不変であることの付加的な利点を持っていますむしろ内包(tuple
コンストラクタに送り込まこの場合、実際に発電式)を使用して、より多くの機能をd:
>>> for s in students:
... print(s.password)
...
rickkyticky
password
tinkles
>>> passwords = tuple(s.password for s in students)
>>> passwords
('rickkyticky', 'password', 'tinkles')
>>>
namedtuple
は高速で、dict
より効率的にかなり多くのメモリ。
これは関数型プログラミングと何が関係していますか?とにかくそこにオブジェクトを使用しています。あなたは質問が不明です。このようなデータ構造を反復する方法を知りたいだけなら、既にそのトピックに重複がたくさんあります。 –
私はクラスを書くことができないので、どうすれば実生活のオブジェクトを表すことができますか?私には分かりませんでした。申し訳ありません。 –
Pythonで組み込みのコンテナクラスを使用しようと考えているようです。私はなぜクラス定義の使用に制限があるのか分かりません...しかし、あなたの質問がそのようなデータ構造を反復する方法であるならば、そのトピックについてたくさんの質問があります。 –