Я пытаюсь сгенерировать словарь {single-key: [multi-value]} в Python из файла .txt.
Это текстовый файл (разделенный табуляцией),
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 ()", но почему-то не могу правильно сгенерировать словарь. Я могу сгенерировать словарь через это, но это странно. Итак, я извлекаю один из ключей из этого странного словаря.
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]
Я не могу понять, что я делаю неправильно. Я буду полезен за любую помощь или направление.