Python でオブジェクトのリストを並べ替える
Python リストは同種ではないため、Python で提供される他のデータ型とは異なります。
リストの索引付けは、最初の索引として 0 から始まり、順次実行されます。リスト内のすべての要素には明確な場所があります。これは、リスト内での複製が許可されているためです。
このチュートリアルでは、Python でオブジェクトのリストを並べ替えるさまざまな方法を紹介します。
Python で list.sort()
メソッドを使用してオブジェクトのリストを並べ替える
list.sort()
メソッドは、すべてのリスト要素を昇順または降順で並べ替えます。
これには、key
と reverse
の 2つのオプションのパラメーターが含まれています。key
パラメータは、その名前が示すように、並べ替えプロセスのキーとして機能します。reverse
パラメーターは、ソート順を決定するために使用されます。reverse
の値が True
の場合、ソートは逆順/降順で行われます。
ただし、この関数は、前述のオプションのパラメーターを使用しなくても問題なく機能します。
次のコードは、list.sort()
メソッドを使用して Python でオブジェクトのリストを並べ替えます。
class BankEMP:
def __init__(self, name, dept, age):
self.name = name
self.dept = dept
self.age = age
def __repr__(self):
return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"
if __name__ == "__main__":
emps = [
BankEMP("Elijah", "IT", 20),
BankEMP("Nik", "Banking", 21),
BankEMP("Lucien", "Finance", 19),
]
# sort list by `name` in the natural order
emps.sort(key=lambda x: x.name)
print(emps)
# sort list by `name` in reverse order
emps.sort(key=lambda x: x.name, reverse=True)
print(emps)
出力:
[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
[{Nik, Banking, 21}, {Lucien, Finance, 19}, {Elijah, IT, 20}]
key
パラメーターの値を生成するには、operator.attrgetter()
を使用できます。
attrgetter()
は operator
モジュールからインポートされ、そのオペランドから属性をフェッチする呼び出し可能なオブジェクトを返すために使用されます。
次のコードは、list.sort()
メソッドと operator.attrgetter()
を使用して、Python でオブジェクトのリストを並べ替えます。
from operator import attrgetter
class BankEMP:
def __init__(self, name, dept, age):
self.name = name
self.dept = dept
self.age = age
def __repr__(self):
return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"
if __name__ == "__main__":
emps = [
BankEMP("Elijah", "IT", 20),
BankEMP("Nik", "Banking", 21),
BankEMP("Lucien", "Finance", 19),
]
# sort list by name in the natural order using 'attrgetter()'
emps.sort(key=attrgetter("name"))
print(emps)
出力:
[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
Python で sorted()
関数を使用してオブジェクトのリストを並べ替える
Python には、list.sort()
関数の代替として機能する組み込みの sorted()
関数が用意されています。
list.sort()
は特定の値を返さず、元のリストに変更を加えますが、sorted()
関数は元のリストに変更を加えるのではなく、ソートされたリストを返します。
sorted()
関数には、オプションのパラメーターとして reverse
のみが含まれています。
次のコードは、sorted()
関数を使用して Python でオブジェクトのリストを並べ替えます。
class BankEMP:
def __init__(self, name, dept, age):
self.name = name
self.dept = dept
self.age = age
def __repr__(self):
return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"
if __name__ == "__main__":
emps = [
BankEMP("Elijah", "IT", 20),
BankEMP("Nik", "Banking", 21),
BankEMP("Lucien", "Finance", 19),
]
# sort list in natural order of name using sorted() function
sort1 = sorted(emps, key=lambda x: x.name)
print(sort1)
出力:
[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn