python的dict和set
dict
dict是dictionary的缩写,python内置了字典,在其他语言中也称为map,使用键值对储存,具有极快的查找速度。
如果是只用list来实现,就需要两个list,先在第一个list中查找,找到之后再到另一个list中查找,显然这样速度很慢。而且list达到很长,耗时就很长很长。。。
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]
因为一个key只对应一个value,如果多次针对一个key赋值,那么前面的key的value就会被覆盖。
还有如果key不存在,就会报错,所以我们需要提前检查key是否存在。
删除一个key:使用pop(key)方法,相对应的value也会被删除。
dict可以用在需要告诉查找的很多地方,牢记的是,dict 的key必须是不可变对象,即string,tuple,numbers。
dict查找实际是用的哈希算法。
set
set是一组key的集合,但是不存储value。由于key不能重复,所以,在set中,没有重复的key。
创建一个set
必须传入一个list作为输入集合
s = set([1,2,3]);
s//{1,2,3}
set接收一个参数,就是list或tuple或者其他可迭代对象
L = [x,y,z];
s = set(L);
但是L中的元素x,y,z有任何一个可变就会报错。
添加元素
可以重复添加,但是不会有效果
s.add(4);
删除元素
s.remove(4);
set可以看做是数学意义上的无序和无重复元素的集合,所以两个set可以做&(交集)和|(并集)运算。
set和dict唯一区别在于set没有存储对应的alue,set的原理和dict一样,同样不可以放入可变对象
python内部传值
先贴一段代码
# 对list进行测试
list0 = [1,2,"tt",["ryr","hr"]];
list1 = list0;
list1[0] = 11;
list1[1] = 22;
list1[3][0] = "aa";
list1[3][1] = "bb";
# //对数字和字符串还有tuple进行测试
a = "yrr";
b = a;
b = "rer";
c = ("gr",12,["grr",45]);
d = c;
d = ("grgr",22,["grr",455]);
# c[0] = "grggr";
# c[1] = 22;
c[2][0] = "ggrgr";
c[2][1] = "help";
print(c);
print(d);
print(a);
print(b);
print(list0);
print(list1);

在python中,string,tuples,numbers是不可更改的对象,而list,dict则是可以修改的对象,我理解的修改和不可修改,是指是否能在本身上进行修改。
nfoo = 1
nfoo = 2
lstFoo = [1]
lstFoo[0] = 2
修改:虽然string,tuples,numbers可以进行修改,但是修改之后,原来内存中的那个numbers就不存在了,就被"抛弃"了,内存中又重新创建一块区域来存储另一个值。
但是对于list和tuples而言,修改的仅仅是内容改变,原来的那块内存并没有被丢弃,也没有创建新的内存。
python的dict和set的更多相关文章
- Python中dict的特点、更新dict、遍历dict
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样.而list的查找速度随着元素增加而逐渐下降. 不过dict的查找速度快不是没有代价的,dict的缺点是占用内 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- python 字典 dict 该注意的一些操作
在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下: 1)操作dict 时,尽量少产生新的列表对象.比如: 遍历dict的时候,如果用 dic = {"a" ...
- python字典dict的增、删、改、查操作
## python字典dict的增.删.改.查操作dict = {'age': 18, 'name': 'jin', 'sex': 'male', }#增# dict['heigh'] = 185 # ...
- Python 字典 dict() 函数
描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...
- Python 基础 Dict 和 Set 类型
python 什么是dict 例如: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 我们把名称称为key,对应的成绩称为value,dic就是通过key 来查找 ...
- python实现dict版图遍历
python实现dict版图遍历的示例. 代码: #_*_coding:utf_8_import sysimport osclass Graph(): def __init__(self, V, E) ...
- Python之Dict和Set类型(入门5)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407905.html 本文出自:[Edwin博客园] Python之Dict和Set类型 1. Python ...
- 'dict_values' object does not support indexing, Python字典dict中由value查key
Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...
- Python的dict字典结构操作方法学习笔记
Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...
随机推荐
- LCD实验学习笔记(七):NAND FLASH
s3c2440 CPU内置NAND FLASH控制器.相关寄存大器起始地址为0x4e000000. 通过设置NFCONF寄存器,设置NAND FLASH 时序. 通过设置NFCONT寄存器,使能NAN ...
- java===java基础学习(7)---用户自定义类
package testbotoo; import java.util.*; public class EmployeeTest { public static void main(String[] ...
- 【bzoj4552】排序
二分一个值,然后线段树上模拟. #include<bits/stdc++.h> #define lson (o<<1) #define rson (o<<1|1) ...
- 如何使用vux创建vue项目
1.安装vue-cli,通过vue-v可以查明 安装vue-cli步骤 vue init airyland/vux2 projectPath(项目名字) 2.安装依赖模块 方法1:npm instal ...
- 从Java Future到Guava ListenableFuture实现异步调用
原文地址: http://blog.csdn.net/pistolove/article/details/51232004 Java Future 通过Executors可以创建不同类似的线程 ...
- 访问Github慢的解决办法
http://blog.csdn.net/sunsteam/article/details/63253933 http://tool.chinaz.com/dns 151.101.196.249 g ...
- PHP PDO类 单例
<?php /*//pdo连接信息 $pdo=array("mysql:host=localhost;dbname=demo;charset=utf8","root ...
- 前端读者 | CSS三角形和饼图
@羯瑞 三角形 .triangle{width:0;height:0;border-width:50px;border-style:solid;border-color:red blue green ...
- js正则表达大合集【转载自:http://caibaojian.com】
[注明原文链接吧]:http://caibaojian.com 1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4 ...
- jquery.bootpag分页控件
<script src="//code.jquery.com/jquery-2.1.3.min.js"></script> <script src=& ...