在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']}}
我想做一个配对的组合,没有重复的元素在内部字典,以结束这样的结果。。。在
^{pr2}$我建立了一个函数,让我去做。。。在
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”的函数。但我不知道如何去适应它,如果可能的话,或者改进我的尝试。有什么帮助吗?在
您的
combinations
方法是正确的,您只需将每个组合的结果再次转换为dict:这个版本是一个生成器,可以高效地生成对,没有任何东西比绝对必要的时间更长地保存在内存中。如果需要列表,只需调用生成器上的
^{pr2}$list()
:输出:
你甚至可以将整个过程组合成一个线性发生器:
哪些输出:
如果您使用的是python3,请将}分别替换为}。在
.itervalues()
和{.values()
和{如果你想要所有的对组合,你可以用下面的短一点的,但我不能说这是更有效的。在
输出
^{pr2}$相关问题 更多 >
编程相关推荐