似乎当我在对象中使用数字类型作为键名时,它总是被转换为字符串.反正有没有把它作为数字存储?正常的类型转换似乎不起作用.
例:
var userId = 1;
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);
Run Code Online (Sandbox Code Playgroud)
目录输出:
{
'1': 'a value'
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这个:
{
1: 'a value'
}
Run Code Online (Sandbox Code Playgroud)
建议吗?
谢谢
Apache Beam支持多个运行后端,包括Apache Spark和Flink.我熟悉Spark/Flink,我试图看到Beam的批处理优缺点.
看一下Beam字数统计示例,它感觉它与原生的Spark/Flink等价物非常相似,可能有一个稍微冗长的语法.
我目前没有看到为这样的任务选择Beam over Spark/Flink的一大好处.到目前为止我能做的唯一观察:
是否有更好的例子突出了梁模型的其他优点/缺点?是否有关于失控如何影响性能的信息?
我正在尝试将基于setuptools的项目从传统配置迁移setup.py到现代pyproject.toml配置。
同时,我希望保持基于 的完善工作流程pip-compile,即 arequirements.in被编译为 a requirements.txt(当然对于最终用户/非库项目)。由于完全透明,这具有重要的好处:
因此,我不想pyproject.toml通过dependencies = []列表直接在内部维护依赖项,而是在pip-compiled托管的外部维护requirements.txt。
这让我想知道:有没有一种方法可以requirements.txt在pyproject.toml配置中引用文件,而不必回退到setup.py脚本?
有没有办法在matplotlib中对boxplots进行分组?
假设我们有三个组"A","B"和"C",我们想为每个组创建"苹果"和"橙子"的箱线图.如果无法直接进行分组,我们可以创建所有六种组合并将它们并排放置.可视化分组的最简单方法是什么?我试图避免将刻度标签设置为"A + apples"之类的东西,因为我的场景涉及的名称比"A"长得多.
考虑使用可变映射来跟踪事件/计数的简单问题,即:
val counts = collection.mutable.Map[SomeKeyType, Int]()
Run Code Online (Sandbox Code Playgroud)
我目前增加计数的方法是:
counts(key) = counts.getOrElse(key, 0) + 1
// or equivalently
counts.update(key, counts.getOrElse(key, 0) + 1)
Run Code Online (Sandbox Code Playgroud)
这在某种程度上感觉有点笨拙,因为我必须指定两次密钥.在性能方面,我也希望key在地图中找到两次,我想避免.有趣的是,如果Int提供某种机制来修改自身,就不会发生这种访问和更新问题.从提供函数Int的Counter类更改increment为例如允许:
// not possible with Int
counts.getOrElseUpdate(key, 0) += 1
// but with a modifiable counter
counts.getOrElseUpdate(key, new Counter).increment
Run Code Online (Sandbox Code Playgroud)
不知何故,我总是期望在可变映射中具有以下功能(有点类似transform但没有返回新集合和具有默认值的特定键):
// fictitious use
counts.updateOrElse(key, 0, _ + 1)
// or alternatively
counts.getOrElseUpdate(key, 0).modify(_ + 1)
Run Code Online (Sandbox Code Playgroud)
但据我所知,这种功能并不存在.具有这样的f: A => A就地修改可能性一般(性能和语法方面)是否有意义?可能我只是在这里遗漏了一些东西...我想必须有一些更好的解决方案来解决这个问题,不需要这样的功能吗?
更新:
我应该澄清我已经知道withDefaultValue但问题仍然是相同的:执行两次查找仍然是一次查询的两倍,无论是否是O(1)操作.坦率地说,在很多情况下,我会非常乐意实现因子2的加速.显然,修改闭包的构造通常可以移动到循环之外,所以这不是一个大问题,而不是运行操作不必要两次.
我目前正在尝试将更多功能的编程风格应用于涉及低级(基于LWJGL)的GUI开发的项目.显然,在这种情况下,需要携带很多状态,这在当前版本中是可变的.我的目标是最终拥有一个完全不可变的状态,以避免状态变化作为副作用.我研究了scalaz的镜头和状态monad一段时间,但我主要担心的是:所有这些技术都依赖于写时复制.由于我的州有大量的田地和一些相当大的田地,我担心表现.
据我所知,修改不可变对象的最常用方法是使用生成的copy方法case class(这也是镜头所做的内容).我的第一个问题是,这种copy方法是如何实际实现的?我用以下类进行了一些实验:
case class State(
innocentField: Int,
largeMap: Map[Int, Int],
largeArray: Array[Int]
)
Run Code Online (Sandbox Code Playgroud)
标杆管理,并通过查看输出-Xprof,它看起来像更新someState.copy(innocentField = 42)实际进行深拷贝和我观察显著性能下降,当我增加的大小largeMap和largeArray.我某种程度上期望新构造的实例共享原始状态的对象引用,因为内部引用应该只传递给构造函数.我可以以某种方式强制或禁用默认的这种深度复制行为copy吗?
在思考写时复制问题时,我想知道FP中是否存在更多通用的解决方案,它以一种增量方式存储不可变数据的变化(在"收集更新"或"收集"的意义上)变化").令我惊讶的是我找不到任何东西,所以我尝试了以下方法:
// example state with just two fields
trait State {
def getName: String
def getX: Int
def setName(updated: String): State = new CachedState(this) {
override def getName: String = updated
}
def setX(updated: Int): State = new CachedState(this) {
override def getX: Int = updated
} …Run Code Online (Sandbox Code Playgroud) state design-patterns functional-programming scala immutability
在我学习Nim的过程中,我正在研究Nim的并发编程方法.我已经看到了一些关于线程局部垃圾收集限制的评论(例如这里和那里),但我仍然没有完全看到这一点的所有含义.
我想知道在Nim中是否存在某种完善的"设计模式"如何处理这些限制?也许有可能考虑一个需要线程间共享/交互的典型示例,并为这样的问题展示可能的惯用解决方案?
到目前为止,我自己试图找到一个好的解决方案并没有真正成功,并导致了这个更具体的问题TChannel.
我的问题是找到给定文件集的公共路径前缀.
从字面上看,我期待"os.path.commonprefix"可以做到这一点.不幸的是,commonprefix位于其中的事实path相当具有误导性,因为它实际上将搜索字符串前缀.
对我来说问题是,如何才能真正解决路径?在这个(相当高的评级)答案中简要提到了这个问题,但仅作为附注并且提议的解决方案(对commonprefix的输入附加斜线)imho存在问题,因为它将失败例如:
os.path.commonprefix(['/usr/var1/log/', '/usr/var2/log/'])
# returns /usr/var but it should be /usr
Run Code Online (Sandbox Code Playgroud)
为了防止其他人陷入同一个陷阱,可能值得在一个单独的问题中讨论这个问题:是否有一个简单/可移植的解决方案,不依赖于对文件系统的讨厌检查(即访问结果) commonprefix并检查它是否是一个目录,如果没有返回os.path.dirname结果)?
我刚刚开始使用Bokeh.下面我创建一些用于rect图的 args .
x_length = var_results.index * 5.5
Run Code Online (Sandbox Code Playgroud)
将指数乘以5.5可以让我在标签之间留出更多空间.
names = var_results.Feature.tolist()
y_length = var_results.Variance
y_center = var_results.Variance/2
Run Code Online (Sandbox Code Playgroud)
var_results是一个Pandas数据帧,具有典型的,顺序的,非重复索引.var_results还有一个列Features是非重复名称的字符串,最后它有一个Variancedtype float 的列.
r = figure(x_range = names,
y_range = (-0.05,.3),
active_scroll = 'wheel_zoom',
x_axis_label = 'Features',
y_axis_label = 'Variance')
r.rect(x_length,
y_center,
width=1,
height=y_length,
color = "#ff1200")
output_notebook()
show(r)
Run Code Online (Sandbox Code Playgroud)
我基本上是用矩形制作条形图.Bokeh似乎非常可定制.但是我的图表在边缘看起来很粗糙.
正如您所看到的,在图表下方和X轴标题"特征"上方有一个丑陋的污迹.这是标签标题(技术上是矩形标题).如何为标签创建空间并将其旋转到45度,以便它们可读,而不仅仅是重叠的混乱?
python ×4
scala ×3
actor ×1
akka ×1
apache-beam ×1
apache-flink ×1
apache-spark ×1
bar-chart ×1
bokeh ×1
boxplot ×1
concurrency ×1
dictionary ×1
immutability ×1
javascript ×1
key ×1
matplotlib ×1
nim-lang ×1
numeric ×1
object ×1
pandas ×1
path ×1
pip ×1
prefix ×1
scala-2.10 ×1
setuptools ×1
state ×1
types ×1