字典dict :

dict和set的key都是不可变对象

对于不变对象来说,调用对象自身的任意方法,也不会改变对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

一、 创建字典的格式:

字典名d = {key1:value1, key2:value2, key3:value3}

说明:a. 整个字典在花括号{ }中,key和value之间用冒号(:)分割,每对之间用逗号(,)分割.

b. 字典名d可以自定义。

     字典的特点:

(1)键key必须是唯一的,但值value允许重复。

(2)键key必须是不可变的,如字符串、数字或元组tuple,而值可以取任何数据类型。最常用的key是字符串。

键key不能是列表List,如下使用list的结果会报错:

二、  访问字典里的值,格式:

a.  字典名['key'] 或 字典名[“key”]    注:单引号,双引号均可

b.  如果使用字典里没有的键key访问数据,会输出如下错误:

判断key是否存在的两种方法:

(1)in 方法

‘Thomas’  in d     #返回 false,说明字典中的key值中不存在Thomas这个key

(2)get(  ) 方法

如果key 不存在,系统默认返回none,或者自己指定不存在时返回的value

d.get('Thomas', -1)    #如果不存在就会返回-1,

三、修改字典

增加新的键/值对,修改已有的键对应的值

创建字典: d={'michael':98, 'jane':79, 'kang':60}

 增加: 字典名[新的key]=值  eg.   d['lily']=78

修改: 字典名[已有的Key]=新值     eg.  d['kang']=84

删除:(1) d.pop(key)   (2)del d[key]    (3)del d    (4)d.clear()

删除的四种方式的区别:

(1)和(2)的效果一样,只是删除单个key.   对应的value也会从dict中删除

(3)是完全删除字典及其定义,再使用print(d)时会报错.

(4)只删除字典里的元素,使用print(d)时仍会出现字典的结构,但没有字典元素。

print("创建字典d")
d={'michael':98,'jane':79,'kang':60}
print("创建时字典:",d)
print("jane的分数:",d['jane'])
print("kang的分数为:",d['kang']) print("修改键为kang对应的值:")
d['kang']=83
print("修改后的字典:",d) print("删除kang这个键:")
d.pop('kang')
print("删除某个键之后的字典:",d) print("另一种方式删除key")
del d['jane']
print("另一种方式删除key后的结果:",d) print('添加 lily这个键:')
d['lily']=76
print("添加某个键之后的字典:",d) print("判断某个键是否在字典中的两种方式,key in d 和 d.get(key)")
print("第一种判断key是否在字典中:",'lily' in d)
print("第二种判断key是否在字典中:",d.get('wen')) d.clear()
print("使用字典的clear方法后查看字典结果为:",d) print("下面是使用字典的del方法后查看字典的结果为:发现是报错")
del d
print(d)

下图是上图中代码的执行结果:

注意: dict内部存放的顺序和key放入的顺序是没有关系的。

和list相比,dict的特点:

1,查找和插入的速度极快,不会随着key的增加而变慢

2,需要占用大量的内存,内存浪费多

list的特点:

1,查找和插入的时间随着元素的增加而增加

2,占用空间小,浪费内存很少

综上,dict是用空间来换取时间的一种方法。

set 部分

1,set和dict类似,也是一组key的集合,但不存储value, 由于key不能重复,所以,在set中,没有重复的key

2,创建set,需要list作为输入集合。  显示的顺序不表示set是有序的

3,重复元素在set中会自动过滤。

4,添加元素: add( key )

5,删除元素:remove(key)

6,set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

 s1 = set([1, 1, 2, 2, 3, 3])
print('s1:',s1)
s2 = set([2, 3, 4])
print('s2:',s2)
print('s1,s2的交集:',s1 & s2)
print('s1,s2的并集:',s1 | s2)

Python — 字典dict 和 集合set的更多相关文章

  1. python中几个常见的黑盒子之“字典dict” 与 “集合set”

    这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...

  2. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  3. python 字典dict - python基础入门(15)

    前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为 ...

  4. python字典dict的增、删、改、查操作

    ## python字典dict的增.删.改.查操作dict = {'age': 18, 'name': 'jin', 'sex': 'male', }#增# dict['heigh'] = 185 # ...

  5. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  6. 'dict_values' object does not support indexing, Python字典dict中由value查key

    Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...

  7. Python 字典dict 集合set

    字典dict Python内置字典,通过key-value进行存储,字典是无序的,拓展hash names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75 ...

  8. Python字典(dict)使用技巧

    字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...

  9. python 字典 dict 该注意的一些操作

    在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下: 1)操作dict 时,尽量少产生新的列表对象.比如: 遍历dict的时候,如果用 dic = {"a" ...

随机推荐

  1. 第二周作业-web后台应用开发与xml

    web后台: 网站前台和网站后台通常是相对于动态网站而言,即网站建设是基于数据库开发 的网站.基于带数据库开发的网站,一般分网站前台和网站后台.网站前台是面向网站访问用户的,通俗的说也就是给访问网站的 ...

  2. VBA语法总结

    为了控制Excel,学了些VBA,总结下语法,下文分为五部分: 一.代码组织 二.常用数据类型 三.运算符 四.控制流 五.常用内置函数 一.代码组织 1.能写代码的地方有{模块,类模块}. 2.代码 ...

  3. 基于usb4java的usb通讯

    下载java API及lib库地址:http://usb4java.org/index.html 1.导入所需要的库: 2.添加配置文件:文件名:javax.usb.properties:内容:jav ...

  4. 如何相互转换逗号分隔的字符串和List【转】

    将逗号分隔的字符串转换为List 方法 1: 利用JDK的Arrays类 String str = "a,b,c"; List<String> result = Arr ...

  5. PHP GZ压缩与解压

    /*将字符串添加至GZ文件*/ function gz_str($str,$gz_name){ $fp = gzopen ($gz_name, 'w9'); gzwrite ($fp, $str); ...

  6. 第十二届GOPS全球运维大会2019深圳站即将开幕

    第十二届 GOPS 全球运维大会深圳站 会议召开时间:2019年4月12日-13日 会议召开地点:深圳圣淘沙酒店(翡翠店) 会议主办单位:高效运维社区 票务合作伙伴:活动家 会议报名地址:https: ...

  7. C# 准确获取系统 CPU 使用率

    1.  PerformanceCounter 注意:(32位下不是线程安全的) public class ProcessorUsage { const float sampleFrequencyMil ...

  8. ListView的BeginUpdate()和EndUpdate()的用处

    许多Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,至于为何要这样用简单说明一下. 当我们向一个Listvie ...

  9. VSCode 打开文件tab键空格数量异常问题

    [1]现象与原因 现象:用Notepad++打开文件,tab键占4个空格键.但是,用VSCode打开,tab键缺变成了3个空格键. 原因:因为VSCode默认启用了根据文件类型自动设置tabsize的 ...

  10. Kubernetes持久化存储2——探究实验

    目录贴:Kubernetes学习系列 一.简介 本文在“创建PV,创建PVC挂载PV,创建POD挂载PVC”这个环境的基础上,进行各种删除实验,并记录.分析各资源的状态. 二.实验脚本 实验创建了一个 ...