【问题标题】:Counting none duplicate elements in a Hash Table Lisp计算哈希表 Lisp 中没有重复的元素
【发布时间】:2013-11-25 02:56:13
【问题描述】:
(dolist (i list (hash-table-count hash))
  (setf (gethash i hash) t))))

上面的代码是我因病错过的一个讲座教程的摘录,我理解了一些代码,但我不知道它是如何计算不完全相同的元素的。

我所知道的:我们正在循环遍历列表,对于列表中的每个 i,我们将哈希表中的 i 设置为键,并将值设置为 true。

【问题讨论】:

  • 那么,问题是什么?
  • 一个哈希不能包含给定键两次或多次。哈希表被用于压缩重复键。他们就是这样做的;它们是一个动态集数据结构。一个集合要么包含一个元素,要么不包含;它不包含一个元素两次或三次。如果两次向哈希添加一个键,它只存在一次,并且与最近的值相关联。

标签: loops hashmap lisp


【解决方案1】:

例如:如果list(3 3 5 6 6 6 9),则循环将依次检查每个列表元素,并将这些哈希键设置为t356 和@987654327 @。由于36 在列表中重复,因此不会为这些元素创建新的哈希键。最后hash-table-count返回哈希表中key的个数,即4

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 2016-02-24
    • 2014-11-20
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多