老吴Python宝典之——Python字典&集合(第五章 )

 

欢迎您进入老吴的博客,如有联系请加QQ群:1055524279

5.1  python字典的概述

在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。

但是从Python 3.6开始,字典是变成有顺序的了。你先插入键值对A,后插入键值对B,那么当你打印Keys列表的时候,你就会发现B在A的后面。

作用:存多个值,key-value存取,取值速度快

定义:key必须是不可变类型,value可以是任意类型

字典是python基础数据类型当中唯一一个映射关系的数据类型;

说明:

字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。

列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方便。

当索引不好用时,使用字典,字典中找某个元素时字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值,字典由键值组成。

程序当中的字典:

 

生活中的字典特点:前几页相当于目录结构,通过偏旁部首可以查找内容。

 

5.2  字典的增删改查操作

 

参考代码:

# 字典的增加
infor = {"name":"zhangsan"}
print(infor) # 打印
infor["age"] = 16  #添加age
infor["qq"] = 100886 # 添加qq
print(infor)  # 打印

# 字典的修改
infor["qq"] = 10010  # 修改就是 :如果值存在就修改,不存在则是添加
print(infor)

# 字典的删除
del infor["qq"]
print(infor)

# 字典的查询
print(infor.get("name"))
print(infor.get("qq"))

字典增删改查语法:

 

 

 

5.3  python字典的特点

因为字典是无序的,所以字典没有索引值;

因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引);

因为字典以键取值,所以字典的键唯一且不可修改;

因为字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。

5.4  python字典的常见操作

 

 

 

字典的取值

keys

返回一个包含字典所有key的列表

values

返回一个包含字典所有vaule的列表

get

以键取值,如果指定键不存在,默认返回None,可以指定返回内容

update

以字典格式更新指定键的内容,如果键不存在,创建键和值

items

返回字典键值呈元组形式的格式

 

len

测量字典,键值对的个数(整体)

 

 

参考代码:

# 字典的查

# 直接dic[key](没有此键会报错)
dic = {'name': '老吴', 'age': 17}
print(dic['name']) # 老吴

print(len(dic)) #len()测量字典,键值对的个数(整体)

# get 以键取值,如果指定键不存在,默认返回None,可以指定返回内容
dic = {'name': '老吴', 'age': 17}
v = dic.get('name')
print(v) # '老吴'
v = dic.get('name1')
print(v) # None
v = dic.get('name2','没有此键')
print(v) # 没有此键

# keys() 返回一个包含字典所有key的列表
dic = {'name': '老吴', 'age': 17}
print(dic.keys()) # dict_keys(['name', 'age'])

# values() 返回一个包含字典所有vaule的列表
dic = {'name': '老吴', 'age': 17}
print(dic.values()) # dict_values(['老吴', 17])

# items() 返回字典键值呈元组形式的格式
dic = {'name': '老吴', 'age': 17}
print(dic.items()) # dict_items([('name', '老吴'), ('age', 17)])

# update 表示更新
#字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。
dict = {'name': 'test', 'age': 17}
dict2 = {'sex': 'man' }
dict.update(dict2)
print("更新后字典是%s" %dict)

 

 

 

 

字典的删除

pop

弹出,返回并删除指定键对应的值

popitem

随机弹出一个键值元组,这里随机的原因是因为字典无序

clear

清空字典

字典的判断

in

判断指定的键是否在字典当中,即将被废除,之后我们python3用in

字典的遍历

通过for ...in ...

通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

 

 

 

 

参考代码:

infor = {"name":"zhangsan","age":17}
# 遍历字典
for i in infor:
    print(i)
print(infor.pop("age"))  #弹出,返回并删除指定键对应的值
print(infor.popitem())  #随机弹出一个键值元组,这里随机的原因是因为字典无序
print(infor.clear())  # 清空字典

 

判断值存在应该判断key值

 

 

 

 

5.5 Python集合

5.5.1  集合的定义

 

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
  去重,把一个列表变成集合,就自动去重了。
  关系测试,测试两组数据之前的交集、差集、并集等关系。
作用:关系运算,去重

 

 

 

参考代码:

#coding:utf-8
#作用:关系运算,去重
s = {1,2,3,3,2,1}
print(s)
print(type(s)) # 打印集合类型

 

集合没有顺序

交集:公共部分

并集:| 没有重复的

对称差集^:只在x或y中,但是不会同时出现在二者中

差集(a-b)是:项在a中,但不在b中。

创建集合

 

5.1.2 集合的增加和删除

 


#集合的增加
set1 = {'test','wusir','laowu'}
set1.add('Python')
print(set1)

#集合的删除
set1.remove('test')  # 删除一个元素
print(set1)

set1.pop()  # 随机删除一个元素
print(set1)

set1.clear()  # 清空集合
print(set1)

 

5.1.3  集合的其他操作

 

 

 

参考代码:

#coding:utf-8
#作用:关系运算,去重
python = {"test","gavin","woniu"}
linux = {"boy","girl","test"}
# &交集:同时报名两门课程的学生
print(python&linux)

# |并集: 所有的学生
print(python|linux)

#^ 对称差集:没有同时报名两门课程
print(python^linux)

#  - 差集:只报名python课程的学生,去掉共同的部分
print(python-linux)

posted on 2020-02-16 01:54  青春回忆素颜  阅读(267)  评论(0编辑  收藏  举报