我有一本字典方含列表的列表:匹配索引蟒蛇
d = [('Locus_1',
[['>Safr02', 'R', '104'],
['>Safr03', 'G', '104'],
['>Safr04', 'A', '104'],
['>Safr10', 'A', '104'],
['>Safr02', 'K', '110'],
['>Safr03', 'T', '110'],
['>Safr04', 'T', '110'],
['>Safr10', 'T', '110']]),
('Locus_2',
[['>Safr01', 'C', '15'],
['>Safr02', 'Y', '15'],
['>Safr04', 'Y', '15'],
['>Safr07', 'Y', '15'],
['>Safr01', 'Y', '78'],
['>Safr02', 'T', '78'],
['>Safr04', 'T', '78'],
['>Safr07', 'T', '78']])]
本詞典是用下面的代碼創建:
snp_file = open(sys.argv[2], 'r')
snps = csv.reader(snp_file, delimiter=',')
d = OrderedDict()
for row in snps:
key = row[0]
d.setdefault(key,[])
d[key].append(row[1:])
的數據可以在這裏找到:https://www.dropbox.com/sh/3j4i04s2rg6b63h/AADkWG3OcsutTiSsyTl8L2Vda?dl=0
我有一個複雜的任務在這個數據上做的一點,我想分成幾個步驟,但我不知道如何做到這一點:
我需要關於Locus_X-name(我在另一個文件中有一個對列表,但是對於這個問題,我們只需說Locus_1
和Locus_2
是一對)數據配對。
所以對於Locus_1:Locus_2
我需要匹配每個軌跡列表(SafrXX)中位置0處的名稱。對於那些相同的(所以Locus_1:Safr02-Locus_2:Safr02
),我需要比較位置1的字母 - 因此在這個例子中,字母是:R:Y
。
爲了使其更加棘手,我需要在位置值的所有組合做2.
所以我需要在上面進行比較的字母,將是:
R:Y
R:T
K:Y
K:T
現在,我並不是要求你寫一段代碼,它實際上可以做到這一點,但是,分離和接近這個任務最合乎邏輯的方式是什麼?有什麼我可以先做的,所以我不必在複雜的多重嵌套循環中做所有事情?
你可以發佈一條線的你的輸出應該是什麼樣子?看看你的數據,除了第一個字段外,沒有明確的依賴關係。 –