ich selber bin erst vor kurzem zur Sprache Python gekommen, hab aber schon etwas Erfahrung in Programmierung - wenn auch eher im Bereich Hobby im Solo-Team.
Wie auch immer. Zur Zeit hänge ich an folgenden Projekt / Problem:
Ich habe eine 2D-Liste, die wie folgt aussieht:
Code: Alles auswählen
MAX = 5
LIST = []
LIST.append(
{
'Name' :'Ordner First',
'FPI' :2,
'File':
[
'first random file 01',
'first random file 02',
'first random file 03',
'first random file 04',
'first random file 05',
'first random file 06',
'first random file 07',
'first random file 08',
'first random file 09',
'first random file 10',
]
}
)
LIST.append(
{
'Name' :'Ordner dumdidum',
'FPI' :2,
'File':
[
'dumdidum random file 01',
'dumdidum random file 02',
'dumdidum random file 03',
'dumdidum random file 04',
'dumdidum random file 05',
]
}
)
LIST.append(
{
'Name' :'Ordner random',
'FPI' :2,
'File':
[
'random random file 01',
'random random file 02',
'random random file 03',
'random random file 04',
'random random file 05',
]
}
)
Ganz oben im Code ist eine Variable, die als Max-Wert für die neue Liste dient.
Jede Liste selber hat nochmal einen eigenen Max-Wert (FPI = File Per Index).
Grob:
Es soll eine neue Liste erstellt werden, die Maximal aus 5 Einträgen pro Index besteht. Die 5 Einträge sollen jeweils mit den Einträgen von 'File' gefüllt werden - aber maximal den 'FPI'-Anzahl.
Am Beispiel mit MAX-Wert '5', und jeder 'FPI'-Wert als '2'
Code: Alles auswählen
(
[
'first random file 01',
'first random file 02',
'dumdidum random file 01',
'dumdidum random file 02',
'random random file 01',
],
[
'first random file 03',
'first random file 04',
'dumdidum random file 03',
'dumdidum random file 04',
'random random file 02',
],
[
'first random file 05',
'first random file 06',
'dumdidum random file 05',
'random random file 03',
],
[
'first random file 07',
'first random file 08',
'random random file 04',
'random random file 05',
],
[
'first random file 09',
'first random file 10',
],
)
Ein weiteres Beispiel mit MAX-Wert '3', 'FPI'-Wert bleibt '2':
Code: Alles auswählen
(
[
'first random file 01',
'first random file 02',
'dumdidum random file 01',
],
[
'first random file 03',
'first random file 04',
'dumdidum random file 02',
],
[
'first random file 05',
'first random file 06',
'dumdidum random file 03',
],
[
'first random file 07',
'first random file 08',
'dumdidum random file 04',
],
[
'first random file 09',
'first random file 10',
'dumdidum random file 05',
],
[
'random random file 01',
'random random file 02',
],
[
'random random file 03',
'random random file 04',
],
[
'random random file 05',
],
)
Wenn noch unklar ist, oder weitere Beispiele benötigt werden - einfach sagen.
Mein bisheriges Vorgehen war, das ich erstmal die Liste durchgehe und anhand des 'FPI'-Wertes trenne:
Code: Alles auswählen
LIST = []
LIST.append(
{
'Name' :'Ordner First',
'FPI' :2,
'File':
[
'first random file 01',
'first random file 02',
'first random file 03',
'first random file 04',
'first random file 05',
'first random file 06',
'first random file 07',
'first random file 08',
'first random file 09',
'first random file 10',
]
}
)
LIST.append(
{
'Name' :'Ordner dumdidum',
'FPI' :2,
'File':
[
'dumdidum random file 01',
'dumdidum random file 02',
'dumdidum random file 03',
'dumdidum random file 04',
'dumdidum random file 05',
]
}
)
LIST.append(
{
'Name' :'Ordner random',
'FPI' :2,
'File':
[
'random random file 01',
'random random file 02',
'random random file 03',
'random random file 04',
'random random file 05',
]
}
)
nID = 0
MAX = 5
for nList in LIST:
nID = nID + 1
nName = nList['Name']
nFPI = nList['FPI'] # = File Per Index
nFile = nList['File']
if nID > 1:
print()
print('Name:\t' + str(nName))
print('FPI:\t' + str(nFPI))
print('ID:\t\t' + str(nID))
vFileCount = 0
vFileIndex = 0
if nFPI > MAX: vFPI = MAX
else: vFPI = nFPI
for vName in nFile:
vFileCount = vFileCount + 1
if vFileCount > vFPI:
vFileCount = 1
vFileIndex = vFileIndex + 1
print(
'\t\t'
+ '\t' + str(vFileIndex)
+ '\t' + str(vFileCount)
+ '\t' + str(vName)
)
Das klappt ja auch soweit ganz gut.
Dann hab ich versucht den MAX-Wert mit einzubeziehen.
Hatte das eine oder andere Versucht. Bspw. eine temporäre Liste, wo dann anhang des Indexes ein Zähler drin ist, um dann zu zählen, ob MAX für Index X erreicht wurde.
Aber irgendwie hatte das nie so richtig funktioniert - oder ich bin zu doof dafür ô.O
Meine Frage wäre halt, ob man da mal gucken kann und einen Tipp oder sowas hätte.
Eine "fertige" Lösung wäre aber auch nicht schlecht ;o
Vielleicht mach ich mir ja auch viel zu viel Arbeit und in Python gibt es "relativ" einfache Methoden.
Oder sowas ist ohne weiteres gar nicht möglich - keine Ahnung.
Wenn noch irgendetwas fehlt oder eine Frage besteht - einfach sagen.
Ich danke schon mal allen für die Hilfe.