我试图熟悉Swift,所以我正在做一些我通常在Python中做的基本计算。
我想使用密钥从字典中获取值。在Python中我只想:
sequences = ["ATG","AAA","TAG"]
D_codon_aa = {"ATG": "M", "AAA": "R", "TAG": "*"}
for seq in sequences:
print D_codon_aa[seq]
>>>
M
R
*
当我在Swift中尝试这个时。
let sequences = ["ATG","AAA","TAG"]
let D_codon_aa = ["ATG": "M", "AAA": "R", "TAG": "*"]
for seq in sequences
{
var codon = D_codon_aa[seq]
println(codon)
}
>>>
Optional("M")
Optional("R")
Optional("*")
1)什么是Optional(),为什么它围绕字典值?
2)为什么我不能制作一个包含多种类型对象的字典?
在Python中,我可以这样做:
sequence= {'A':0,'C':1, 'G':'2', 'T':3.0}
在Swift我不能这样做:
let sequences = ["A":0,"C":1, "G":"2", "T":3.0]
答案 0 :(得分:0)
<强> 1 强> 看看dictionarys下标的声明:
subscript(key: Key) -> Value?
它返回一个可选项,因为你可以在下标中使用你想要的任何键,但它们可能与值没有关联,所以在这种情况下它会返回nil,否则值包含在一个可选项中。
2:实际上,如果您将字典定义为例如,则可以。 [“String”:AnyObject],现在您可以将键与值关联,这符合AnyObject协议。
<强>更新强>
您的示例let sequences = ["A":0,"C":1, "G":"2", "T":3.0]
在Xcode 6.1.1中编译得很好。