2011-10-08 25 views
0
let h = dict [(1, 2), (3, 4)] 
Console.WriteLine(h.Count) 
for i in h do 
    Console.WriteLine(i) 

给我F#:迭代字典只是返回自己?

1 
[(1, 2), (3, 4)] 

两个问题。首先,为什么迭代字典给我一个只有1项的序列,字典本身?这背后可能有一些逻辑,也会影响我最终试图迭代的其他事情。这对于字典(Any(),All(),Aggregate()等)暴露的所有其他Seq成员意味着什么?

其次,是否有一种很好的方式来迭代和通常操纵字典中的键值对,就像在Python中一样?

回答

10

您在需要分号的地方使用逗号。

[(1,2); (3,4)] 

对元组的逗号,列表元素的分号。 (这里的括号是可选的。)

如果你想遍历键值对在字典中,你可以使用

for KeyValue(k,v) in someDictionary do ... 

它采用KeyValue活跃模式。

+0

47秒。卫生署! :-) –

+1

@Tomas - 完美无瑕的胜利! :) – Brian

+0

该死的该死的,我知道这是愚蠢的。在其他语言中使用逗号过多。谢谢=) –