同じクラスのインスタンスのリストがあり、クラスのプロパティに基づいてリストを区別したいと考えています。これを達成するための最もpythonicな方法は何ですか?
サンプルコードは次のとおりです。
#!/usr/bin/python
#-*- coding:utf-8 -*-
class MyClass(object):
def __init__(self, classId, tag):
self.classId = classId
self.tag = tag
myList = []
myInstance1 = MyClass(1, "ABC")
myInstance2 = MyClass(2, "DEF")
myInstance3 = MyClass(3, "DEF")
myList.append(myInstance1)
myList.append(myInstance3) # note that the order is changed deliberately
myList.append(myInstance2)
MyClass のプロパティの 1 つに基づいてリストを並べ替えたい場合は、通常、キーで並べ替え、ラムダ式を使用してキーを設定します。次のようにします。
myList.sort(key=lambda x: x.classId)
for x in myList:
print x.classId
$ python ./test.py
1
2
3
同様の方法 (ラムダ、マップなど) を使用して、「タグ」プロパティに基づいてリストを区別することは可能ですか? また、これが可能であれば、そのリスト内のクラスのプロパティに基づいてリストを区別する最も「pythonic」な方法ですか?
SO と Google の両方でこの問題に関するトピックを検索してみましたが、見つかったすべての結果は、カスタム オブジェクトではなく数値のみを含む単純なリストを扱っていました。