1

.txt ファイルから Python で {single-key : [multi-value]} 辞書を生成しようとしています。

これはテキストファイル(タブ区切り)です。

A02.835.583.748      A02.880     0.818181818181818
A02.835.583.748      A02.513     0.818181818181818
A02.835.583.748      A01.378.800.750     0.636363636363636
A02.835.583      A02.880     0.863636363636364
A02.835.583      A02.513     0.863636363636364
A02.835.583      A01.378.800.750     0.681818181818182
A01.378.800.750      A02.880     0.727272727272727
A01.378.800.750      A02.513     0.727272727272727
A01.378.800.750      A01.378.800.750     1

同じように、「defaultdict()」関数を使用していますが、どういうわけか適切に辞書を生成できません。これで辞書を生成できますが、奇妙です。そこで、この奇妙な辞書からキーの 1 つを取得します。

print(anaDict.get('A02.835.583.748'))

出力:

['A02.880=0.818181818181818', [...], ['A02.513=0.818181818181818'], ['A01.378.800.750=0.636363636363636']]

ただし、このディクショナリの [...] は、実際には同じキーの他の値を最初のような方法でネストしています。

私が書いたコード、

anaDict = defaultdict()
anaSet = set()
with open(f, 'r') as anaFile:
    if '148' in f:
        for line in anaFile:
            key = line.split('\t')[0].rstrip()
            conclusionVal = line.split('\t')[1].strip()
            simScore = line.split('\t')[2].strip()
            value = [conclusionVal + "=" + simScore]
            if key not in anaDict:
                print("Here it goes: " , key, value)
                anaDict[key] = value                    
            if key in anaDict:
                print("Different value: ", key, value)
                anaDict[key].append(value)

        print(anaDict.get('A02.835.583.748'))

コードが次の辞書を生成することを期待していました (キーと値のペアとして表示)。

A02.835.583.748 : [A02.880 = 0.818181818181818 , A02.513 = 0.818181818181818,  A01.378.800.750 = 0.636363636363636]
A02.835.583 : [A02.880 = 0.863636363636364, A02.513 = 0.863636363636364, A01.378.800.750 = 0.681818181818182]
A01.378.800.750 : [A02.880 = 0.727272727272727, A02.513  = 0.727272727272727, A01.378.800.750 = 1]

何が間違っているのかわかりません。私はどんな助けや指示にも役立ちます。

4

2 に答える 2