Listen in einem verschachtelten defaultdict durchsuchen
Verfasst: Mittwoch 15. Oktober 2014, 13:18
Hallo,
wie würde man am besten Listen in einem verschachtelten defaultdict durchsuchen (siehe Code unten) mit folgenden Bedingungen:
- 7 aus r[6] ist korrekt weil für "5" und "6" aus r[8] beide unterschiedliche Buchstaben in r[7] haben. Auch korrekt ist 9 aus r[6]
- 8 aus r[6] würde korrekt sein weil für "5" und "6" aus r[8] beide unterschiedliche Buchstaben in r[7] haben, aber ist nicht im Bereich von 200000 bis 2000000.
- 10 aus r[6] ist zu Ignorieren weil für "5" und "6" aus r[8] ein 'X' in r[7] vorhanden ist
- 14 aus r[6] ist zu Ignorieren weil für "5" und "6" aus r[8] beide 'G' in r[7] haben
und als Ergebnis folgendes ausgibt '"Test", "A", "B01", 828288, 7'?
Oder gibt es eine bessere Datenstruktur um dieses Problem zu lösen?
Vielen Dank im voraus.
wie würde man am besten Listen in einem verschachtelten defaultdict durchsuchen (siehe Code unten) mit folgenden Bedingungen:
- 7 aus r[6] ist korrekt weil für "5" und "6" aus r[8] beide unterschiedliche Buchstaben in r[7] haben. Auch korrekt ist 9 aus r[6]
- 8 aus r[6] würde korrekt sein weil für "5" und "6" aus r[8] beide unterschiedliche Buchstaben in r[7] haben, aber ist nicht im Bereich von 200000 bis 2000000.
- 10 aus r[6] ist zu Ignorieren weil für "5" und "6" aus r[8] ein 'X' in r[7] vorhanden ist
- 14 aus r[6] ist zu Ignorieren weil für "5" und "6" aus r[8] beide 'G' in r[7] haben
und als Ergebnis folgendes ausgibt '"Test", "A", "B01", 828288, 7'?
Code: Alles auswählen
from collections import defaultdict
class Test():
def __init__(self, s_id, s_type_id, pos, chr, name_id):
self.s_id = s_id
self.s_type_id = s_type_id
self.pos = pos
self.chr = chr
self.name_id = name_id
if __name__ == "__main__":
r = [["Test", "A", "B01", 828288, 1, 1, 7, 'C', 5],
["Test", "A", "B01", 828288, 1, 1, 7, 'T', 6],
["Test", "A", "B01", 171878, 3, 7, 8, 'C', 5],
["Test", "A", "B01", 171878, 3, 7, 8, 'T', 6],
["Test", "A", "B01", 871963, 3, 8, 9, 'A', 5],
["Test", "A", "B01", 871963, 3, 8, 9, 'G', 6],
["Test", "A", "B01", 1932523, 1, 9, 10, 'T', 4],
["Test", "A", "B01", 1932523, 1, 9, 10, 'A', 5],
["Test", "A", "B01", 1932523, 1, 9, 10, 'X', 6],
["Test", "A", "B01", 667214, 1, 11, 14, 'T', 4],
["Test", "A", "B01", 667214, 1, 11, 14, 'G', 5],
["Test", "A", "B01", 667214, 1, 11, 14, 'G', 6]]
s = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
for i in r:
s[r[0]][r[1]][r[2]].append(Test(r[6], r[4], r[3], r[7], r[8]))
print sVielen Dank im voraus.