Я новичок в python, поэтому исправьте меня, если это не лучший/самый быстрый способ сделать это. Я создал словарь с несколькими значениями, назначенными каждому ключу. В codonDict
Я включил только 1 ключ с несколькими его значениями (будет намного больше). Теперь у меня есть файл, который я назвал здесь calls
. Я хочу найти ключ, который соответствует #CHROM
в файле, а затем выполнить поиск по значениям ключей, чтобы увидеть, содержит ли он соответствующий POS
.Ключи поиска и его значения с использованием defaultdict
codonDict = defaultdict(<type 'list'>, {'HE667775': [106690, 106692, 106694, 106696, 106698, 106700, 106702, 106704, 106706, 106708, 106710, 106712, 106714, 106716, 106718, 106720, 106722, 106724, 106726, 106728, 106730, 106732, 106734, 106736, 106738, 106740, 106742, 106744, 106746, 106748, 106750, 106752, 106754, 106756, 106758, 106760, 106762, 106764, 106766, 106768, 106770, 106772, 106774, 106776, 106778, 106780, 106782, 106784, 106786, 106788, 106790, 106792, 106794, 106796, 106798, 106800, 106802, 106804, 106806, 106808, 106810, 106812, 106814, 106816, 106818, 106820, 106822, 106824, 106826, 106828, 106830, 106832, 106834, 106836]})
calls
файл:
#CHROM POS
HE667775 106824
HE667775 24
Таким образом, с этой выборки данных желаемый результат будет то, что HE667775 106824
, который получает append
к test
То, что я пробовал:
test = []
line = calls.readline()
while len(line) > 1:
#for line in calls:
objects = line.split()
pos = int(objects[1])
chrom = objects[0]
#if scaf in codonDict and pos associated with that key
for scaf, position in codonDict.itervalues():
if pos == position and chrom in scaf:
test.append(line)
print test
Ошибка:
ValueError: too many values to unpack
Edit: Это полная отслеживающий ошибки, однако линии различаются, поэтому строка 28 в приведенном выше коде будет я считаю, pos = int(objects[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 28, in main
ValueError: too many values to unpack
Не могли бы вы показать полную трассировку стека ошибок? – thefourtheye
@ crysis405: вы все еще получаете ошибку теперь, когда вы изменили 'itervalues' на' iteritems'? – superjump