首页 > 解决方案 > 遍历字典以创建多个列表/字符串

问题描述

我有一本看起来像这样的字典:

a = {
    (1, 'M'): 0.106997,
    (2, 'R'): 0.167087,
    (3, 'H'): 0.25406,
    (4, 'I'): 0.332115,
    (5, 'I'): 0.324872,
    (6, 'C'): 0.328603,
    ...
}

键代表蛋白质序列中的位置以及该位置的氨基酸。该值是介于 0 和 1 之间的某个数字。如果该值大于或等于 0.4 ,我正在尝试编写一些将连续氨基酸串在一起的代码。当它到达一个值小于 0.4 的氨基酸时,它需要继续阅读字典,直到它到达另一组值大于/等于 0.4 的连续氨基酸。理想情况下,这将创建多个独立的氨基酸串。

这是我的代码

import re
import requests
URL = 'https://iupred2a.elte.hu/iupred2a/long/P03255.json'
response = requests.get(URL)
out = response.json()

seq = out['sequence']
score = out['iupred2']

seq_num = enumerate(seq, start=1)

merge = dict(zip(seq_num, score))

region = ''

for key, value in merge.items():
    if value >= 0.40:
        region += key[1]

print(region)

与此连接所有值超过 0.4 的氨基酸。我需要对此进行修改,以便仅连接值超过 0.4 的连续氨基酸。

标签: python-3.xdictionarybioinformatics

解决方案


如果我理解正确,您想创建一个区域列表,其中一个区域是一串符合您的连续值标准的氨基酸。如果是这样,那么这可能会为您解决问题:

region_list = []
region = ""
for key, value in merge.items():
    if value >= 0.40:
        region += key[1]
    elif region:
        region_list.append(region)
        region = ""
if region:
    region_list.append(region)
    
for region in region_list:
    print(region)
A
DQLIEEVLADNLPPPSHFEPPTLHELYDLDVTAPEDPNEEAVSQIFPDS
GIDLLTFPPAPGSPEPPHLSRQPEQPEQRALGPVSMPNLVPEVIDLTCHEAGFPPSDDEDEEGEEFVLDYVE
CRSCHYH
SPVSEPEPEPEPEPEPARPTRRPKMAPAILRRPTSPVSRECNSSTDSCDSGPSNTPPEIHPVVP
PV
V
G
RQAVECIEDLLNEPGQPLDLSCKRPRP

推荐阅读