Seite 1 von 1

Nummernblöcke mergen

Verfasst: Donnerstag 18. Juni 2009, 10:57
von Patrick_S
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

Verfasst: Donnerstag 18. Juni 2009, 11:18
von EyDu
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

Verfasst: Donnerstag 18. Juni 2009, 12:41
von Patrick_S
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