Nummernblöcke mergen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Patrick_S
User
Beiträge: 5
Registriert: Dienstag 17. Februar 2009, 17:11

Hallo,

ich habe ein dictionaire mit Nummern und Bezeichnung und möchte die Nummern "mergen" wenn 10er Blöcke existieren.

Zum Beispiel soll aus
12330 test1
12331 test1
12332 test1
12333 test1
12334 test1
12335 test1
12336 test1
12337 test1
12338 test1
12339 test1
nur
1233 test1 werden.
Hat jemand eine Idee - meine bisherigen Versuche scheitern.

Code: Alles auswählen

sorted_keys = sorted(range.keys()) 
for k in sorted_keys: 
    if re.search('0$',k) AND k[+1] == k+1 AND k[+2] == k+2 AND k[+3] == k+3 AND k[+4] == k+4 AND k[+5] == k+5 AND k[+6] == k+6 AND k[+7] == k+7 AND k[+8] == k+8 AND k[+9] == k+9
        dict.popitem
    output.write('%s\t%s\n' % (k, range[k]))
Die Nummernlänge kann für die Blöcke auch variieren - Ziel wäre soweit zu mergen wie möglich.
Ich möchte nicht den Code - nur einen Zeiger in die richtige Richtung.
Die Prüfung dass pro 10er Block der gleiche Wert als Zuweisung geprüft wird.

Viele Grüsse
Patrick
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Den Rest bekommst du schnell angepast.

Code: Alles auswählen

values =
 ["12330 test1",
  "12331 test1",
  "12332 test1",
  "12333 test1",
  "12334 test1",
  "12335 test1",
  "12336 test1",
  "12337 test1",
  "12338 test1",
  "12339 test1",
  "40000 test2",
  "50000 test3",
  "50001 test3"]

last_index = None
num_elements = 0
for index, value in (x.split(" ") for x in values):
    index = int(index)
    
    if last_index is None:
        start_index = index
    else:
        if index != last_index+1:
            print value, start_index, start_index+num_elements-1
            num_elements = 0
            start_index = index
        
    last_index = index
    num_elements += 1

print value, start_index, start_index+num_elements-1
Das Leben ist wie ein Tennisball.
Patrick_S
User
Beiträge: 5
Registriert: Dienstag 17. Februar 2009, 17:11

Hallo EyDu,

ich verstehe es noch nicht - aber ich teste erstmal weiter.
Ich fange nochmal von vorne an ohne die Werte zu betrachten.

Vielen Dank
Patrick
Antworten