首页 > 解决方案 > Clojure 中的 Python setdefault 函数

问题描述

我正在尝试在 Clojure 中做类似的事情:

# 增加特征/类别对的计数

  def incf(self,f,cat):    
    self.fc.setdefault(f,{})    
    self.fc[f].setdefault(cat,0)    
    self.fc[f][cat]+=1

有人知道吗?

标签: clojure

解决方案


我认为一个紧密的并行是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将默认值零设置为如果不存在则递增。


推荐阅读