【发布时间】:2012-11-26 10:12:05
【问题描述】:
在python中,我有一个这样的字典...
pleio = {'firstLine': {'enf1': ['54', 'set'],
'enf2': ['48', 'free'],
'enf3': ['34', 'set'],
'enf4': ['12', 'free']}
'secondLine':{'enf5': ['56','bgb']
'enf6': ['67','kiol']
'enf7': ['11','dewd']
'enf8': ['464','cona']}}
我想在内部字典中不重复元素的情况下进行配对组合,最终得到这样的结果......
{'enf3': ['34', 'set'], 'enf2': ['48', 'free']}
{'enf3': ['34', 'set'], 'enf1': ['54', 'set']}
{'enf3': ['34', 'set'], 'enf4': ['12', 'free']}
{'enf2': ['48', 'free'], 'enf1': ['54', 'set']}
{'enf2': ['48', 'free'], 'enf4': ['12', 'free']}
{'enf1': ['54', 'set'], 'enf4': ['12', 'free']}
我构建了一个函数,让我可以这样做......
import itertools
def pairwise():
'''
'''
leti=[]
for snp, enfs in pleio.items():
for x in itertools.combinations(enfs, 2 ):
leti.append(x)
pleopairs=[]
for i in leti:
pipi={}
for c in i:
pipi[c]= enfs[c]
pleopairs.append(pipi)
..但我想知道是否有更有效的方法,例如来自 itertools 或任何其他来源的另一个特定功能。顺便说一句,我在itertools 文档中找到了一个名为“pairwise”的函数。但我不知道如何适应它,如果可能的话,或者改进我的尝试。有什么帮助吗?
【问题讨论】:
-
enfs将是来自pleio处理的最后一个值。它几乎肯定不是您想要使用的。目前尚不清楚您在函数的后半部分想要做什么。 -
pleio有多个密钥吗? -
是的,pleio 有几百个键……为了简单起见,我只写了一个。在函数的第二部分,我只是迭代字典,收集元组对中每个元素的值并构建两个元素的字典,并将它们附加到列表中。
-
那你会得到不正确的结果,这个步骤是没有必要的。
-
但它确实有效...为什么不正确?
标签: python combinatorics itertools