secretbase.log

.NET/C#/Pythonなど

コレクションをソートして取り出す際にインデックスつける

コレクションから要素を取り出していく際に、連番をつけたいことがあります。

例えば下記のような文字列の配列を、ソートしてインデックスとともに要素を取得したい、といった場合のTipsです。

"Banana", "Apple", "Melon"

ソートし取り出す際にインデックスつける

C#

C# の場合は、 Selectメソッドにオーバーロードがあり、それを用いることで実現できます。

string[] fruits = { "Banana", "Apple", "Melon" };

foreach(var item in fruits.OrderBy(n => n).Select((v, i) => new {v, i}))
{
    Console.WriteLine($"{item.i} {item.v}");
}
0 Apple
1 Banana
2 Melon

Python

Pythonでは 組み込み関数である enumerate を使います。 enumerateはインデックスと要素をタプルで返してくれます。

fruits = ["Banana", "Apple", "Melon"]

for index , item in enumerate(sorted(fruits)):
    print(index, item)
0 Apple
1 Banana
2 Melon

いずれも、シンプルに実装できますね。

参考