clojure - Clojure 中的 Python setdefault 函数
问题描述
我正在尝试在 Clojure 中做类似的事情:
# 增加特征/类别对的计数
def incf(self,f,cat):
self.fc.setdefault(f,{})
self.fc[f].setdefault(cat,0)
self.fc[f][cat]+=1
有人知道吗?
解决方案
我认为一个紧密的并行是fnil
接受一个函数和一些默认参数值,然后返回一个函数,如果使用 nil 参数调用该函数将使用默认值:
(defn incf [fc f cat]
(update-in fc [f cat] (fnil inc 0)))
(incf {} :feature-foo :category-bar)
=> {:feature-foo {:category-bar 1}}
在这里,我们用于update-in
更新输入映射中的嵌套值,并用于fnil
将默认值零设置为如果不存在则递增。
推荐阅读
- python - 在网络摄像头中捕捉人脸并实时显示到烧瓶中
- facebook - 通过 Facebook graph api 回复评论时收到代码 368 的错误响应
- c# - WPF:用户控件数据上下文绑定不反映对 ViewModel 的更改
- c# - NPOI Excel - 如何在不保存的情况下返回 FileStream?
- c# - 在第一次触摸 android unity2D 平台游戏时有一次小滞后
- rest - Xena 用户成员资格返回所有行
- javascript - 关闭模态对话框到另一个模态对话框
- c# - 如何从存储 uri 中提取存储帐户名称和 blob 名称
- angular - 如何将 netlify 函数连接到我的 Angular 应用程序
- amazon-s3 - S3 存储桶的 ListObjectsV2 操作的 AccessDenied