gpt4 book ai didi

c# - LISP 中的关联列表是否与 C# 中的字典相同?

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:57 25 4
gpt4 key购买 nike

我正在阅读一本关于 Common LISP 的书,作者说:“列表由存储在列表中的键/值对组成。”

这让我想到,这与 C# 中的字典是一回事吗?如果是,为什么?

最佳答案

抽象概念和具体数据结构之间存在区别。

字典是一个抽象概念——键到值的映射。它可以通过几种不同的方法实现:

  • 作为一个列表:键值对(Lisp 的 alists),交错的键和值的平面列表(Lisp 的 plists),作为一对键和值的两个列表
  • 作为表,可以是 Lisp 的哈希表/Java 的 HashMap 或其他类型的表
  • 作为一棵树(Java 的 TreeMap)
  • 等等

C# 的字典是一种数据结构,它支持(摊销的)常量查找时间,就像 CL 的哈希表一样。在这方面它不同于具有线性查找时间的列表。此外,列表不依赖于元素的哈希码来存储/检索它。 alists 的 API 也不同于 Dictionary 的。 assocrassoc 分别从左侧和右侧查找元素。 (因此,与传统字典不同,列表中可以有相同键到不同值的多个映射)。还有 aconspairlis 来构造一个 alist

编辑 最后,没有从列表中删除项目的标准函数。您可以使用 (remove key alist :key #'car) 删除元素。但请注意,此操作会完整保留原始列表并返回修改后的列表。

关于c# - LISP 中的关联列表是否与 C# 中的字典相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com