文字列リストの文字列末尾の数字が最も大きい要素を取得したい。
a = ['a1', 'a10', 'a100', 'a110', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9']
リストの中身の内、凡てが文字列で書かれた文字列+数値型のリストです。
ソート等によると、一番左から番号の小さい順にソートされるようです。
一番左の数字が一致していると、その右の数字の大小で小さいほうが前に来ます。
この中から、最も数字的に大きい要素を、手っ取り早く取得する一番いい方法はどのような方法でしょうか?
sort()
は、その引数に、ソートを制御するキーを入れられるようですが、どのように書けばいいのかわかりません。
ここには載せていない途中式により、このaの文字部分は、絶対すべてが一致するように取得されています。
この中では、'a110'を、取得するようにしたいです。
シーケンス処理をして一個ずつ調べるしかないでしょうか。
追記:
既に回答をいただいていますが、追加です。
数値は全て整数値です。
-100ハイフン付きの数値や実数値0.01などは想定していません。
文字種は何でも結構ですが、感覚的な域を出ませんが、
人が読んで判読可能な文字が中心です。
なぜなら、この文字は、ユーザーが決定するものだからです。
ですから、読めない文字を入れてもユーザーの責任になります。
数値などは、ユーザーが重複した名前を入れてしまった時に、
自動で追加分であることを表わすための数値を追加するプログラムを書きたかったのです。
そのために、最大値の文字列を取得したかったというのが背景にあります。
自分の頭がそこまで及びませんで申し訳ありませんでした。
Nijiさんがおっしゃっているように001等でソート可能とのことですが、
(おっしゃられて初めて気が附きましたが)、ユーザーが001と書いてくれるとは限らないなと考えました。