【发布时间】:2015-07-03 01:21:09
【问题描述】:
我有一本包含列表列表的字典:
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 对,我需要匹配每个基因座列表 (SafrXX) 中位置 0 处的名称。对于那些相等的(所以Locus_1:Safr02-Locus_2:Safr02),我需要比较位置 1 的字母 - 所以在这个例子中,字母是:R:Y。
为了让它变得更加棘手,我需要对位置 2 处的所有值组合执行此操作。
所以我需要在上面比较的字母是:
R:Y
R:T
K:Y
K:T
现在,我并不是要求您编写一段代码,它实际上可以做到这一点,而只是,拆分并处理此任务的最合乎逻辑的方法是什么?有什么我可以先做的,这样我就不必在复杂的多重嵌套循环中做所有事情了吗?
【问题讨论】:
-
你能发布一行你的输出应该是什么样子吗?查看您的数据,除了第一个字段之外,这些行没有明确的依赖关系。
标签: python list dictionary