【循序渐进学Python】Python中的序列(三)——字典与集合

【循序渐进学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)

猜你喜欢

转载自blog.csdn.net/XVJINHUA954/article/details/107725892
今日推荐