Dictionary 朱莉娅字典;“找不到密钥”;仅当使用循环时

Dictionary 朱莉娅字典;“找不到密钥”;仅当使用循环时,dictionary,key,julia,Dictionary,Key,Julia,我还在努力弄明白这一点(我当时正在编一本字典,但多亏了我的帮助,它才得以正常工作) 以下是我当前的代码: #open files with codon:amino acid pairs, initiate dictionary: file = open(readall, "rna_codons.txt") seq = open(readall, "rosalind_prot.txt") codons = {"UAA" => "stop", "UGA" => "stop", "UAG"

我还在努力弄明白这一点(我当时正在编一本字典,但多亏了我的帮助,它才得以正常工作)

以下是我当前的代码:

#open files with codon:amino acid pairs, initiate dictionary:
file = open(readall, "rna_codons.txt")
seq = open(readall, "rosalind_prot.txt")
codons = {"UAA" => "stop", "UGA" => "stop", "UAG" => "stop"}

#generate dictionary entries using pairs from file:
for m in eachmatch(r"([AUGC]{3,3})\s([A-Z])\s", file)
    codon, aa = m.captures
    codons[codon] = aa
end
所有这些代码似乎都按预期工作。在这一点上,我有我想要的字典,正确的键指向正确的条目。例如,如果我只打印(密码子[“AUG”]),它会打印
'M'
,这是正确的输出。现在我想扫描第二个文件中的一个字符串,对于每3个字母,拉出字典中引用的条目,并将其添加到
prot
字符串中。所以我试着:

for m in eachmatch(r"([AUGC]{3,3})", seq)
    amac = codons[m.captures]
    prot = "$prot$amac"
end

但这将排除错误
未找到键:[“AUG”]
。我知道密钥存在,因为我可以打印
密码子[“AUG”]
,它返回正确的条目,那么为什么它在循环中找不到该密钥呢?

您使用的是什么版本的Julia?我的怀疑是,这可能就是使用子字符串和字符串进行索引的区别。您可能有一个版本,其中匹配捕获是子字符串,但我们尚未确保子字符串散列与相等的字符串值相同。我在当前版本(0.2.1)上,但如果这有任何变化,我将使用iJulia笔记本。如果您想坚持使用正则表达式,并且如果正则表达式将更改为
r“[AUGC]{3,3}”
,则,并且
m.captures
更改为
m.match
,它对您有效吗?另外,我不确定
prot
是如何开始的,但是
prot*=amac
对你有用吗?我没有嫁给Regex,这就是我所知道的用法。我仍在尝试查看你在另一个帖子中提到的东西,但整个事情是一个附带项目,我没有取得太多的进展。但是。。。将正则表达式更改为您建议的效果!我没有正确构建整个库,因为第一次正则表达式搜索没有生成最后一个条目(因为最后一个条目后没有空间),但这很容易修复
prot*=amac也可以工作,我只是不知道这个语法,谢谢你的帮助!