newLISP中的字典类型

2023-11-27 00:58
文章标签 类型 字典 newlisp

本文主要是介绍newLISP中的字典类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在之前一篇在newlisp中使用table-driven模式曾经用过这个类型做table-driver模式。

这里将专门描述Tree如何使用。

创建字典

首先Tree是一个namesapce(也就是context),如果想创建一个字典保存key/value结构,需要如下使用:

(new Tree 'MyTable) 
(MyTable "/home/a.cc" "123:45") 
(MyTable "/home/b.cc" "123:46") 
(MyTable "/home/c.cc" "123:47") 
(MyTable "/home/d.cc" "123:48") 
(MyTable "/home/e.cc" "123:49") 

这样,其实是创建了一个名为MyTable的context,里面用symbol的形式保存了很多key/value的组合。

查询字典

读取的时候也很简单:

(MyTable "/home/a.cc")
"123:45"


添加数据和遍历

(while (read-line)(set 'line-value (parse (current-line) "\t"))(set 'key (line-value 0))(set 'value (int (line-value 1)))(set 'v (my-table key))(if v(my-table key (+ v value))(my-table key value))
)(dolist (item (my-table)) (println (item 0) "\t" (item 1)))(exit)

这段代码演示了如何读取一行数据,分解出key和value,然后用key查找,如果有则累加value,如果没有则添加数据

最后,遍历所有的数据。

字典长度

(length (MyTable))


保存字典

(save "d2.lsp" 'MyTable)

这样MyTable里的所有数据都被保存到d2.lsp文件中,现在打开看一下:

(context 'MyTable)(set '_/home/a.cc "123:45")(set '_/home/b.cc "123:46")(set '_/home/c.cc "123:47")(set '_/home/d.cc "123:48")(set '_/home/e.cc "123:49")(context MAIN)

原来居然是很多的MyTable 中的变量,所以这其实是一个模拟的字典。目前我还不清楚其算法复杂度是多少?


读取字典文件

就是通用做法

(load "d2.lsp")
MAIN

现在可以使用了。




这篇关于newLISP中的字典类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426648

相关文章

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio