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のドキュメントで「ペアワイズ」という関数を見つけました。しかし、私の場合に可能であれば、それをどのように適応させるか、または私の試みを改善する方法がわかりません。何か助けはありますか?