Я новичок в python (хорошо для кодирования в целом) и пытаюсь использовать его для анализа некоторых данных на работе.У меня есть файл, подобный этому:
HWI-ST591_0064:5:1101:1228:2111#0/1 + 7included 11 A>G - -
HWI-ST591_0064:5:1101:1205:2125#0/1 + genomic 17 A>G - -
HWI-ST591_0064:5:1101:1178:2129#0/1 + 7included 6 A>C 8 A>T
HWI-ST591_0064:5:1101:1176:2164#0/1 + 7included 6 A>T 8 A>G
HWI-ST591_0064:5:1101:1199:2234#0/1 + 7included 14 T>C 21 G>A
HWI-ST591_0064:5:1101:1208:2249#0/1 + 7included 32 C>T - -
Tab с разделителями.Я пытаюсь создать словарь, который содержит первое значение строки (уникальный идентификатор) в виде списка значений, который соответствует присоединенным последним 4 значениям в качестве ключа, например:
{'32C>T--': ['HWI-ST591_0064:5:1101:1208:2249#0/1'],
'6A>C8A>C': ['HWI-ST591_0064:5:1101:1318:2090#0/1'],
'36A>G--': ['HWI-ST591_0064:5:1101:1425:2093#0/1'],
'----': ['HWI-ST591_0064:5:1101:1222:2225#0/1'],
'6A>C8A>T': ['HWI-ST591_0064:5:1101:1178:2129#0/1','HWIST591_0064:5:1101:1176:2164#0/1']}
Таким образомЗатем я могу получить список уникальных идентификаторов и сосчитать или отсортировать или сделать другие вещи, которые мне нужно сделать.Я могу сделать словарь, но когда я пытаюсь вывести его в файл, я получаю сообщение об ошибке.Я думаю, что проблема в том, что это список, я получаю сообщение об ошибке
Файл "trial.py", строка 33, в outFile.write ("% s \ t% s \ n"% ('\ t '.join (key, mutReadDict [key]))) TypeError: unhashable type:' list '
Есть ли способ заставить это работать, чтобы я мог иметь его в файле?Я попробовал .iteritems () в цикле for, создавая словарь, но это не сработало.Спасибо и вот мой код:
inFile = open('path', 'rU')
outFile = open('path', 'w')
from collections import defaultdict
mutReadDict = defaultdict(list)
for line in inFile:
entry = line.strip('\n').split('\t')
fastQ_ID = entry[0]
strand = entry[1]
chromosome = entry[2]
mut1pos = entry[3]
mut1base = entry[4]
mut2pos = entry[5]
mut2base = entry[6]
mutKey = mut1pos + mut1base + mut2pos + mut2base
if chromosome == '7included':
mutReadDict[mutKey].append(fastQ_ID)
else:
pass
keyList = [mutReadDict.keys()]
keyList.sort()
for key in keyList:
outFile.write("%s\t%s\n" % ('\t' .join(key, mutReadDict[key])))
outFile.close()