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 s
Vielen Dank im voraus.