.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]
何が間違っているのかわかりません。私はどんな助けや指示にも役立ちます。