"データ種別_連番.csv"
という形式のファイル名のファイルがあります。リストに入っています。
基本的にはこれを別のリストに入れます。
ただしデータ種別が同じものが複数あるので、
その場合は連番の値が大きい方だけを取得したいです。
Python
1# 元のデータ 2files = [ 3 "A0_01.csv", # <--- データ種別A0が複数あり、連番の値が低いのでいらない 4 "A1_01.csv", # <--- データ種別A1は1つだけなのでいる 5 "A0_02.csv", # <--- データ種別A0が複数あり、連番の値が高いのでいる 6 "A2_03.csv", # <--- データ種別A2は1つだけなのでいる 7 "A15_04.csv", # <--- データ種別A15は1つだけなのでいる 8 "A7_05.csv" # <--- データ種別A7は1つだけなのでいる 9]
Python
1# 元のデータから抽出したいデータ 2files = [ 3 "A1_01.csv", 4 "A0_02.csv", 5 "A2_03.csv", 6 "A15_04.csv", 7 "A7_05.csv" 8]
そこで、2次元配列にデータ種別と連番を入れて、最新のデータか比較を行えるようにする。
比較した後で、ファイル名のリストと照らし合わせて、不要なやつを消すようにしようと考えました。
(他に効率のいい方法があれば教えて下さい。)
というわけで下のようにソースコードを作ったのですが、
----- リストの要素抽出処理 ----- という部分でうまくいきません。
(考え方からおかしいかもしれませんが)
Python
1 2def func(files): 3 4 li = [] 5 6 for file in files: 7 tmp = file.split("_") 8 datakind = tmp[0] 9 commaindex = tmp[1].index(".") 10 num = tmp[1][:commaindex] 11 li.append([datakind, num]) 12 13 # print(li) 14 # [['A0', '01'], ['A1', '01'], ['A0', '02'], ['A2', '03'], ['A15', '04']] 15 16 # ----- リストの要素抽出処理 ----- 17 # イメージ:li[i][0]とli[j][0]を比較して一致したら、li[i][1]とli[j][1]の最新の方を戻り値用のリストに入れるみたいな感じ 18 19 # これだと失敗 20 #for i in range(len(li)-1): 21 # for j in range(i+1, len(li)-1): 22 #省略 23 24 25 # ----- ファイル群の中から必要なやつだけ抽出 ----- 26 27 #return 28 29 30# ファイル群 31# データ種別に規則性はない 32# 下の例の場合A0は複数あるので、連番の値が大きいA0_02.csvを取りたい 33files = [ 34 "A0_01.csv", 35 "A1_01.csv", 36 "A0_02.csv", 37 "A2_03.csv", 38 "A15_04.csv", 39] 40 41 42ret = func(files)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/29 11:58
2020/10/30 06:40