F中的Python风格集合#

F中的Python风格集合#,python,collections,f#,Python,Collections,F#,我正在尝试将一些用于金融分析处理的python代码重构为F#,而我很难复制一些我喜爱的python数据类型。例如,在Python中,我可以很高兴地声明如下变量: timeSeries = { "20110131":1.5, "20110228":1.5, "20110331":1.5, "20110431":1.5, "20110531":1.5 } 然后在函数之间循环,但我不知道F#中的等价物。我试过这个: let timeSeries = ( ["20110

我正在尝试将一些用于金融分析处理的python代码重构为F#,而我很难复制一些我喜爱的python数据类型。例如,在Python中,我可以很高兴地声明如下变量:

timeSeries = { "20110131":1.5, "20110228":1.5, "20110331":1.5, 
               "20110431":1.5, "20110531":1.5 }
然后在函数之间循环,但我不知道F#中的等价物。我试过这个:

let timeSeries = ( ["20110131":1.5], ["20110228":1.5], ["20110331":1.5], 
                   ["20110431":1.5], ["20110531":1.5] )
但它当然失败了。。。我知道外面可能有人在笑,但我对F#很陌生,与Python相比,它感觉很狭窄

我对.NET也很熟悉,只是F#似乎介于脚本语言和C#之类的“适当”语言之间,我还没有完全摸索如何有效地使用它——一切都需要时间。

你可能会觉得有用。看起来你想要一本字典。如果您还不知道,F#支持类似于Python的生成器表达式的东西,称为,您可能会发现它也很有用。例如:

let d = dict [ for i in 0 .. 10 -> i, -i ]

老实说,Python中的字典声明与F#中的声明没有太大区别:

因为
用于F#中的类型注释,所以无法重新定义它。但是,您可以创建一个自定义中缀运算符,使代码更具可读性,更接近Python中通常使用的操作:

let inline (=>) a b = a, b

let timeSeries = dict [
         "20110131" => 1.5;
         "20110228" => 1.5;
         "20110331" => 1.5; 
         "20110431" => 1.5; 
         "20110531" => 1.5;
         ]

在Python中是什么意思?要清楚,Python中列出的timeSeries声明将引发语法错误。方括号用于定义列表,例如[1,2,3],但冒号用于字典中的键和值之间,例如{1:2,“name”:“Fred”}。@DSM,谢谢,已编辑。当时很忙,
=>
如何比内置的
更好?它有时用于将元组创建与其他操作相结合,例如。但对于典型的例子来说,它只是增加了一个角色,这是风格的问题。我发现它在字典中可读性更好,但在列表、数组等方面没有太大区别。我必须同意,内置语法几乎总是理想的结果。谢谢你的解释。
let inline (=>) a b = a, b

let timeSeries = dict [
         "20110131" => 1.5;
         "20110228" => 1.5;
         "20110331" => 1.5; 
         "20110431" => 1.5; 
         "20110531" => 1.5;
         ]