Dict 小记

  Dict 是一个Key-Value字典,与orddict类似,只是比orddict存储的数据要大,具体的接口就不再细说,自己看官方文档,都比较简单,或者看:http://www.techrepublic.com/article/working-with-dictionaries-in-erlang/

这里面有两个存储接口,append和store,有同事问我这两个有什么不同,我能想到的是

1 存储格式不一样,如果存的是列表,

?1> D = dict:new().
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}

6> D3 = dict:append(1, [a,b], D).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],
[[1,[a,b]]],
[],[],[],[]}}}
7> D4 = dict:store(1, [a,b], D).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[[1,a,b]],[],[],[],[]}}}

一个是[[1,[a,b]]], 一个是[[1,a,b]],这个其实没什么,主要是filter的时候要注意格式配置

2 append是追加,如果你要替换原来的Key, 要先erase(Key, D), 再 dict:append(Key, Value)

store就不用,它自己会自动替换原来的Key,这里省了erase(Key,D), 但具体的效率没有测过哪个更快,对于进程字典的效率本来就比较快,空了可以测一下,或者哪个测过请告知下,谢谢!

另外:在R17后还增加了类似的数据结构map,操作基本类似

M = maps:new().
M1 = maps:put(k1,v1,M).
maps:get(k1,M1).
maps:find(k1,M1).
M2 = maps:remove(k1,M1).

get 和 fetch一样,在key不存在的时候,会crash,find会返回error,成功则返回{ok,v1}
时间: 2024-09-30 18:33:44

Dict 小记的相关文章

Python学习小记(2)---[list, iterator, and, or, zip, dict.keys]

1.List行为 可以用 alist[:] 相当于 alist.copy() ,可以创建一个 alist 的 shallo copy,但是直接对 alist[:] 操作却会直接操作 alist 对象 >>> alist = [1,2,3] >>> blist = alist[:] #assign alist[:] to blist >>> alist [1, 2, 3] >>> blist [1, 2, 3] >>>

pandas小记:pandas数据结构及基本功能

http://blog.csdn.net/pipisorry/article/details/18010307 pandas的数据 结构:Series.DataFrame.索引对象pandas基本功能:重新索引,丢弃指定轴上的项,索引.选取和过滤,算术运算和数据对齐,函数应用和映射,排序和排名,带有重复值的轴索引 Pandas介绍 pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具.它是基于NumPy构建的,让以NumPy为中心的应用变得更加简单. 通常建议你先学习NumPy,

临时处理小记:把Numpy的narray二进制文件转换成json文件

临时处理一个Numpy的二进制文件,分析知道里面是dict类型,简单小记一下,如果Numpy和Python基础不熟悉可以看我之前写的文章 In [1]: %%time import numpy as np Wall time: 135 ms In [2]: %%time import pandas as pd Wall time: 351 ms In [3]: %%time df = pd.DataFrame(np.load("data.npy")) # 通过narry创建DataFr

int、str、list、tuple、dict补充

一.int a = 123 b = a# a与b指向同一个地址值 c = 123 d = 123 e = 123 #d.c.e当在-5~257这个范围时,都指向一个地址值(Python优化的结果,当超出这个范围,id与之不同) 二.str a. name = "你猜" for i in name: print(i) bytes_name = bytes(i, encoding='utf-8')# 字符转换成字节 print(byte_name)# 16进制表示 for byte in

SpringBoot - 二零一七0421小记

一.SpringBoot使用起来比起SpringMVC更便捷,在注解上的小变化,我记录了下面几个: @Controller + @ResponseBody = SpringMVC中用@RestController来代替前面两个注解,通过这个注解,可以将所有的前端http请求放入SpringBoot的Controller容器中,并返回json格式的数据给前端 @RequestMapping(value={"/hello","/hi"},method=RequestMe

python数据类型之dict

1.clear:删除所有元素 #D.clear() -> None. Remove all items from D dic_a ={1:'kong',2:'zha',3:'gen'} dic_a.clear() print(dic_a) 结果:{} 2.fromkeys():从序列键和值生成字典的key,value来构建一个新字典 #dict.fromkeys(seq[, value])) seq:是为字典的键准备的value:是字典的默认值 seq = ('Name','Age','Sex'

django之创建第4-1个项目-访问dict数据

1.修改index.html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>django之创建第四个项目</title> </head> <body> <h1>hello,{{test.name}}</h1> <!--模板 变量用变量定义--&g

dict

1 >>> kk={'11':1,'22':2,'33':3} 2 >>> kk['11'] 3 1 4 >>> kk[1] 5 Traceback (most recent call last): 6 File "<pyshell#2>", line 1, in <module> 7 kk[1] 8 KeyError: 1 9 >>> len(kk) 10 3 11 >>>

广州postgresql用户会技术交流会小记 2015-9-19

广州postgresql用户会技术交流会小记  2015-9-19 今天去了广州postgresql用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用postgresql -X2的情况 第二个讲师介绍了postgresql里面的一些执行计划分析 我个人比较关注第一个session,因为涉及到真正的应用案例 网上有对postgresql -X2的简短介绍,我先转载过来 转载:http://francs3.blog.163.com/blog/static/405767272