我有一本字典方含列表的列表:匹配索引蟒蛇
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
现在,我并不是要求你写一段代码,它实际上可以做到这一点,但是,分离和接近这个任务最合乎逻辑的方式是什么?有什么我可以先做的,所以我不必在复杂的多重嵌套循环中做所有事情?
你可以发布一条线的你的输出应该是什么样子?看看你的数据,除了第一个字段外,没有明确的依赖关系。 –