【循序渐进学Python】Python中的序列(三)——字典与集合
今天我们学习Python中的序列最后一篇,字典与集合.
字典
定义
-
字典是另一种可变容器模型,且可存储任意类型对象。
-
字典参数就是参数作为一个字典传入
格式:
- 字典的每个键值对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
注意事项:
-
字典的长度必须与形参个数相同
-
字典的键必须对应函数的形参
-
不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住,前一个值会被覆盖
-
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
-
一般实际开发中,我们使用字符串类型作为key居多
-
键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
-
字典是一个无序的数据类型,不支持下标索引和切片
字典定义的格式
字典名 ={元素1,元素2......}
元素(键值对) ==key(键值):value(实值)
空值
- None
- 如果想创建变量但是还不想赋值可以使用None
字典的遍历
d = {"a": "张三", "b": "15", "c": "男"}
for key in d:
print(key)
for idx in d.values():
print(idx)
for idx in d.items():
print(idx)
for k, v in d.items():
print(k, v)
# 如果循环遍历str list tuple 得到对应的元素的同时也获取他的索引
list1 = ["a", "b", "c", "d"]
for i, value in enumerate(list1):
print(i, value)
运用函数获取字典中的值:
d = {"a": "张三", "b": "15", "c": "男"}
def funFa(a, b, c):
print("a对应%s" % a)
print("b对应%s" % b)
print("c对应%s" % c)
funFa(4, 5, 6)
funFa(**d)
# 最后输出的结果:
# a对应4
# b对应5
# c对应6
# a对应张三
# b对应15
# c对应男
字典的常规操作:
#根据键来获取字典中的值
info_dict = {"age": 20, "name": "小明", "num": "007"}
print(info_dict["name"])
d = {"name": "张三", "age": "15", "xb": "男"}
# 定义一个空的字典
dict = {}
a = len(d)
print(a)
# 字典值的访问查看
print(d)
print(d["name"])
print(d["xb"])
# 字典值的更新修改
d["name"] = "李四"
d["age"] = 16
print(d)
# 字典值的添加
d["mz"] = "汉族"
d["dh"] = "电话"
print(d)
# 字典值的删除
# 能删单一的元素也能清空字典,清空只需一项操作。
# 显示删除一个字典用del命令
# 删除键是"a"的条目
del d["name"]
print(d)
# 清空字典所有条目
d.clear()
print(d)
# 删除字典
del d
print(d)
# 值和键和键值对的打包输出
list1 = list(d.keys())
list2 = list(d.values())
# itens是将键队值打包成元组打印出来
list3 = list(d.items())
print(list1)
print(list2)
print(list3)
# 字典中存在与不存在
if "name" in d:
print("存在")
if "id" not in d:
print("不存在")
# 利用键查询字典中键对应的值
print(d["name"])
value = d.setdefault("name")
print(value)
print(d)
# 根据键更改字典中的值,并设置默认值,如果有的话 那么就输出键对应的值,如果没有的话则输出默认值
value = d.setdefault("name", "新加的")
print(value)
print(d)
# 根据键在字典中查询对应的值,有的话则输出,没有的话 则输出none
value = d.setdefault("z")
print(value)
print(d)
# 根据键在字典中查询对应的值,有的话则输出,没有的话 则输出默认值,并且将none加到字典中
value = d.setdefault("s", "新加的")
print(value)
print(d)
# get
# 获取字典中键值为a的值,有的话则输出 没有的话 则输出none
value = d.get("a")
print(value)
# 获取字典中键值为a的值,有的话则输出 没有的话 则输出默认值
value = d.get("a", "新加的")
print(value)
集合
集合的定义
集合是无序的,可以保存任意的数据类型,不能出现可变的数据类型,集合本身是一个可变的数据类型
集合的格式:
set={元素1,元素2.....}
集合的常规操作:
my_set = {132, 3.14, "hello", True}
print(my_set)
print(type(my_set))
# 输出结果为: set(集合)类型的数据
# 定义一个空的集合
kong_set = set()
print(type(kong_set))
print(len(kong_set))
# 集合的循环遍历
set = {1, 2, 3, "hello"}
for idx in set:
print(idx)
# 向集合中添加字符串
set.add("word")
print(set)
# 将加入的字符拆分开来挨个加入集合中
set.update("you")
print(set)
# 删除
# 删除的如果没有的话 那就报错
set.remove("hello")
print(set)
# set.remove("hello132")
# print(set)
# 删除的如果没有的话, 那么就和原来一样输出 不报错
set.discard("word")
print(set)
set.discard("hello132")
print(set)
# 集合的交集 必须ste1且set2都有才可以输出
set1 = {1, 2, 3, 4, 5, 6, 7, 8}
set2 = {3, 1, 9, 8, 4, 5, }
set3 = set1 & set2
print(set3)
# 集合的并集 set1或set2中有的元素全部输出
set3 = set1 | set2
print(set3)
列表的去重
my_list = [11, 2, 3, 3, 5, 5, 1, 2, 11, 1, 2, 6, 8, 7, 7, 9, 8, 9]
# 去重
# 利用集合中元素的唯一性完成数据的去重
my_set = set(my_list)
# 将列表转换为集合类型 实现去重
my_list = list(my_set)
# 再将set类型转换为list类型
print(my_list)
序列之间的组合
- +相当于将两组数据结合在一起 但是不同类型的数据需要进行数据类型转换
a = (1, 2, 3)
b = [4, 5, 6]
c = a + tuple(b)
print(c)
案例:
需求:找出一个列表中的最大值
my_list = [1, 2, 3, 4, 8, 100, 500, 1215, 1623, 8161]
value = my_list[0]
for i in my_list:
if i > value:
value = i
print(value)