我目前正在使用由13个字母字符串('13mer')和ID代码('Accession')配对组成的数据框,如下所示:
但是,我想创建一个字典,其中Accession代码是键,其值为13mer与登录相关联,因此它看起来如下:
{'JO2176': ['IGY....', 'QLG...', 'ESS...', ...],
'CYO21709': ['IGY...', 'TVL...',.............],
...}
我使用此代码完成了哪些工作:
Accession_13mers = {}
for group in grouped:
Accession_13mers[group[0]] = []
for item in group[1].iteritems():
Accession_13mers[group[0]].append(item[1])
但是,现在我想回过头来迭代每个Accession代码的键并运行我定义为find_match_position(reference_sequence,13mer)的函数,该函数在参考序列中找到13mer并返回其位置。然后我想把这个位置作为13mer的值来附加,这将是关键。
如果有人对如何加快这个过程非常有帮助有任何想法。
谢谢,
贾斯汀
答案 0 :(得分:1)
您可以通过解压缩来更干净地遍历群组:
d = {}
for key, s in df.groupby('Accession')['13mer']:
d[key] = list(s)
这也使你的功能更加清晰!
...但是,我认为它可能更适合枚举:
d2 = {}
for pos, val in enumerate(df['13mer']):
d2[val] = pos
答案 1 :(得分:1)
我建议创建一个新词典,其值是另一个词典。基本上是一个嵌套字典。
position_nmers = {}
for key in H1_Access_13mers:
position_nmers[key] = {} # replicate key, val in new dictionary, as a dictionary
for value in H1_Access_13mers[key]:
position_nmers[key][value] = # do something
要反省字典并确保它没关系:
print position_nmers