Code: Alles auswählen
pcs_fortenames = {
(0, 1, 2, 3): "4-1",
(0, 1, 4, 6): "4-Z15",
(0, 1, 3, 4): "4-3",
(0, 1, 2, 4): "4-2",
(0, 1, 2, 5): "4-4",
(0, 1, 2, 6): "4-5",
(0, 1, 2, 7): "4-6",
(0, 2, 3, 6): "4-12",
(0, 1, 4, 5): "4-7",
(0, 1, 5, 6): "4-8",
(0, 1, 6, 7): "4-9",
(0, 2, 4, 6): "4-21",
(0, 3, 4, 7): "4-17",
(0, 2, 3, 5): "4-10",
(0, 1, 3, 6): "4-13",
(0, 2, 3, 7): "4-14",
(0, 1, 5, 7): "4-16",
(0, 1, 4, 7): "4-18",
(0, 1, 4, 8): "4-19",
(0, 1, 5, 8): "4-20",
(0, 2, 4, 7): "4-22",
(0, 2, 5, 7): "4-23",
(0, 2, 4, 8): "4-24",
(0, 2, 6, 8): "4-25",
(0, 3, 5, 8): "4-26",
(0, 2, 5, 8): "4-27",
(0, 3, 6, 9): "4-28",
(0, 1, 3, 7): "4-Z29",
}
def keyfunc(item):
values = item.split("-", maxsplit=1)
if values[1].startswith("Z"):
values = (values[0], values[1].removeprefix("Z"), 1)
return tuple(map(int, values))
result = sorted(pcs_fortenames.values(), key=keyfunc)
print(result)
Code: Alles auswählen
['4-1', '4-2', '4-3', '4-4', '4-5', '4-6', '4-7', '4-8', '4-9', '4-10', '4-12', '4-13', '4-14', '4-Z15', '4-16', '4-17', '4-18', '4-19', '4-20', '4-21', '4-22', '4-23', '4-24', '4-25', '4-26', '4-27', '4-28', '4-Z29']
Wenn ein anderer Buchstabe als "Z" verwendet wird, müsste es einen ValueError geben, da die Strings nicht in einen Integer umgewandelt werden können.
PS: Im Code ist irgendwo noch ein Fehlehr. Aber nach 10 Stunden Arbeit und 5 Stunden Autofahrt habe ich kein Bock mehr.