Ich mag eine Liste sortieren würde sortieren oder ein Array mit Python folgendes achive: Sagen meine erste Liste ist:Wie Python-Listen aufgrund bestimmter Kriterien
example_list = ["retg_1_gertg","fsvs_1_vs","vrtv_2_srtv","srtv_2_bzt","wft_3_btb","tvsrt_3_rtbbrz"]
ich alle erhalten möchten Elemente, die 1 hinter dem ersten Unterstrich zusammen in einer Liste enthalten und solche, die 2 zusammen in einer Liste enthalten und so weiter. So sollte das Ergebnis sein:
sorted_list = [["retg_1_gertg","fsvs_1_vs"],["vrtv_2_srtv","srtv_2_bzt"],["wft_3_btb","tvsrt_3_rtbbrz"]]
Mein Code:
import numpy as np
import string
example_list = ["retg_1_gertg","fsvs_1_vs","vrtv_2_srtv","srtv_2_bzt","wft_3_btb","tvsrt_3_rtbbrz"]
def sort_list(imagelist):
# get number of wafers
waferlist = []
for image in imagelist:
wafer_id = string.split(image,"_")[1]
waferlist.append(wafer_id)
waferlist = set(waferlist)
waferlist = list(waferlist)
number_of_wafers = len(waferlist)
# create list
sorted_list = []
for i in range(number_of_wafers):
sorted_list.append([])
for i in range(number_of_wafers):
wafer_id = waferlist[i]
for image in imagelist:
if string.split(image,"_")[1] == wafer_id:
sorted_list[i].append(image)
return sorted_list
sorted_list = sort_list(example_list)
funktioniert, aber es ist wirklich peinlich, und es sind viele für Schleifen, die alles verlangsamen, wenn die Listen groß sind.
Gibt es einen eleganteren Weg mit numpy oder irgendetwas?
Hilfe ist willkommen. Vielen Dank.