【发布时间】:2020-07-04 02:03:46
【问题描述】:
我制作了一个名为 ogseqs 的字典,其中包含对应于基因列表的正交组 ID(称为 og)。
ogseqs[og]=genelist
{'OG0000000': ['Acrchr1_1567', 'Acrchr1_2725', 'Acrchr1_2932']}
我想创建一个嵌套字典,其中还将包含基因列表中每个基因的序列。我制作了另一本名为geneseqs 的字典,其中的基因与其序列相对应。
geneseqs[geneID]=sequence
geneseqs = {'Acrchr1_1567': 'MAFL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932': 'MLA...', 'Annmae1_197712': 'MAF...', 'Annmor1_367154': 'MLF...', 'Annmae1_150166': 'MFL...'}
我在合并/嵌套这些词典时遇到问题。我试过简单地分配这样的序列:
genelist:['Acrchr1_1567', 'Acrchr1_2725', 'Acrchr1_2932']
ogseqs={'OG0000000': ['Acrchr1_1567', 'Acrchr1_2725', 'Acrchr1_2932']}
geneseqs={'Acrchr1_1567': 'MAL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932': 'MLA...'}
ogseqs[og][geneID]={}
for geneID in genelist:
if geneID in geneseqs.keys():
ogseqs[og][geneID]=sequence
但我明白了
TypeError: 列表索引必须是整数或切片,而不是 str
所以我认为部分问题在于 ogseqs 中的值在列表中,而不是单个值。我认为这意味着我需要在分配嵌套值之前添加一行来划分这个列表。
完整输入:
ogseqs = {'OG0000000': ['Acrchr1_1567', 'Acrchr1_2725', 'Acrchr1_2932'], 'OG0000001': ['Annmae1_197712', 'Annmor1_367154', 'Annmae1_150166']}
geneseqs = {'Acrchr1_1567': 'MAFL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932': 'MLA...', 'Annmae1_197712': 'MAF...', 'Annmor1_367154': 'MLF...', 'Annmae1_150166': 'MFL...'}
预期输出:
{'OG0000000': {'Acrchr1_1567': 'MAL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932': 'MLA...'},
'OG0000001': {'Annmae1_197712': 'MAF...', 'Annmor1_367154': 'MLF...', 'Annmae1_150166': 'MFL...'}}
【问题讨论】:
-
您现在的确切输入是什么?
-
我添加了准确的输入以帮助澄清
-
感谢您更新问题。我们没有你的档案。为了让我们开始工作,请提供实际数据。例如:假设你想找到一个列表的最大值,你应该提供类似输入:
[1,2,5,3,7,4],预期输出:7,当前代码:,当前输出:3。为此我们不需要知道这个列表是如何形成的。 -
感谢您在这里耐心等待。输入很长,所以为了简化可以缩短它们并说输入是 ogseqs 字典 {'OG0000000': ['Acrchr1_1567', 'Acrchr1_2725', 'Acrchr1_2932']} 和geneseqs 字典 {'Acrchr1_1567': ' MAL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932': 'MLA...'}
-
如果是这种情况,我希望输出为 {'OG0000000': {'Acrchr1_1567': 'MAL...', 'Acrchr1_2725': 'MFA...', 'Acrchr1_2932 ': 'MLA...'}} 基本上,如果我们可以让它工作,我文件中的完整列表也应该工作
标签: python list dictionary nested