我有一个包含列表的字典:
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名称成对查看数据(我有另一个文件中的一对列表,但为了本问题,我们只说Locus_1和Locus_2是一对)。
因此,对于Locus_1:Locus_2这对,我需要匹配每个Locus列表(SafrXX)内位置0处的名称。对于相等的名称(例如Locus_1:Safr02-Locus_2:Safr02),我需要比较位置1处的字母,所以对于这个例子,字母将是:R:Y。
更加棘手的是,我需要针对位置2的所有组合进行这样的操作。
因此,在上面的示例中,我需要比较的字母是:
R:Y
R:T
K:Y
K:T
现在,我并不要求你编写一段真正能够实现此功能的代码,而只是想问一下,最合理的划分和处理此任务的方式是什么?是否有什么我可以先做的事情,以便不必在一个复杂的多重嵌套循环中完成所有操作?