首页 > 编程语言 >⑥初识python--python的字典与集合

⑥初识python--python的字典与集合

时间:2023-09-10 15:58:07浏览次数:46  
标签:20 name python student1 -- 初识 key print 字典

python的字典与集合

一、字典的定义与访问

1、为什么需要字典

思考1:如果有多个数据,例如:'Tom','男',20,如何快速存储?

答:列表,元组

list1 = ['Tom','男',20]

思考2:如何查找到数据"Tom"?

答:查找到下标为0的数据即可。

list1[0]

思考3:如果将来顺序发生变化,如下所示,还能通过list1[0]访问到数据吗?

list1 = ['男',20,'Tom']

答:不能,数据'Tom'的此时下标为2

思考4,数据顺序发生变化,每个数据下标也会随之变化,如何保证数据顺序变化前后能使用同一标准查找数据呢?

答:字典,字典里面数据以键值对形式出现,字典数据顺序与数据顺序无关,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。

字典类型:很适合用来保存一个事物的信息。如一个人的信息、一本书的信息、一个商品的信息。

一个人:性别,年龄,姓名

一个书:标题,价格,出版社

2、字典的定义与访问

基本语法:

字典名称 = {key1:Value1, key2:value2, key3:value3}

注:字典中没有索引下标,其通过key:value键值对来体现键(等价索引下标)与值的关系
key:必须唯一且没有顺序要求,可以是字符串类型、数值类型和元组类型(少)
value:代表元素中具体的值
# 1、定义一个空字典
dict1 = {}
dict2 = dict()

# 2、定义一个有数据的字典
dict3 = {'name': 'Tom', 'sex': '男', 'age': 20}

# 3、通过key的值来访问value的具体值
print(dict3)
print(dict3['name'])
print(dict3['age'])

3、常见问题答疑

  • 字典是不能进行切片操作的,不被允许,因为没有索引下标

  • 创建一个有数据的字典,只能通过{ } 创建,不能通过dict()创建

  • 无论是key或者value,如果是字符串类型则必须添加引号,数值类型,则不需要添加引号。

二、字典的相关操作

1、字典的新增与修改操作

基本语法:字典的新增与修改语法一样

字典名称[key] = value
  • 如果字典中没有这个key,则实现添加操作
  • 如果字典中已经有这个key,则实现修改操作
# 定义一个person的空字典
person = dict()

# 实现字典的新增操作
person['name'] = 'Tom'
person['age'] = 20
person['sex'] = '男'
print(person)

# 字典的修改
person['age'] = 21
print(person)

image-20230909214101653

2、字典的删除操作

基本语法:

del 字典名称[key]
  • 根据字典中的key ,删除满足条件的 key : value 键值对
# 定义一个有数据的字典
student1 = {'name': '莫航', 'age': 20, 'sex': 'male'}

# 删除student1中的age所对应的键值对
del student1['age']

print(student1)

image-20230909215652579

3、字典中的查操作

"""
① 获取字典中的某个元素,字典名称[key],代表访问指定的元素
② 字典也支持直接打印输出
③ 字典也支持for循环打印输出,但是注意,只有字典中key的值可以遍历出来(默认)

"""
student1 = {'name': 'Jack', 'age': 20, 'sex': 'male'}

# ① 通过字典中的key访问指定元素
print(student1['name'])

# ② 直接打印输出
print(student1)

# ③ for循环遍历字典中的key
for key in student1:
    print(key)

  • for循环默认遍历字典中的key

python字典中还提供keys()、values()、items()函数来获取字典的key,value以及键值对(key:value)

编号 函数 作用
1 keys() 以列表返回一个字典所有的键
2 values() 以列表返回一个字典所有的值
3 items() 以列表返回可遍历的(键,值)元组数组
  • 以上三个方法很少单独使用,通常配合for循环进行遍历操作
student1 = {'name': 'Jack', 'age': 20, 'sex': 'male'}
print(student1.keys())
print(student1.values())
print(student1.items())

# 通过keys()方法遍历字典中的key
for key in student1.keys():
    print(key)
print()
# 通过values()方法遍历字典中的value
for value in student1.values():
    print(value)
print()

# 通过items()方法遍历字典中的键值对
for key, value in student1.items():
    print(f'{key}:{value}')

image-20230909224728418

4、字典与列表结合的小案例

① 列表适合同时保存多个数据;

② 字典适合保存一个事物的信息,如一本书,一个人或一件商品

③ 那么列表与字典的结合可以同时保存多个事物的信息:多本书,多个人,多件商品

学生信息管理系统的案例

students = []

student1 = {'name': 'Tom', 'age': 19, "sex": 'male'}
student2 = {'name': 'Harry', 'age': 18, "sex": 'female'}
students.append(student1)
students.append(student2)
# 相当于students = [student1, student2]
print(students)

# 比如现在要删除名字为{name}的学生信息
name = input('请您输入要删除的学生信息:')
for i in students:  # 遍历得到的i为一个个字典
    if i['name'] == name:
        students.remove(i)
        print(f'您已经成功删除{name}的学生信息!')
        print(students)
        break
else:
    print('对不起!没找到名字为%s的学生!' % name)

image-20230910100739193

三、集合(set)

1、什么是集合

集合(set)是一个无序不重复的数据集合。

  • 天生去重(自动返回一个不重复的序列)
  • 无序

2、集合的定义

在python中,我们可以使用{}或set()方法定义一个集合,如果你定义的集合是一个空集合,则只能使用set()方法,{}默认是空字典。

# 定义一个空集合
set1 = set()

print(type(set1))

# 定义一个有数据的集合
set2 = {10, 20, 20, 30, 40}
print(set2)  # 天生去重

# set()方法实现数据类型的转换
set3 = set('abcd')
print(set3)

image-20230910110323108

3、集合的访问

'''
集合类型是无序的,没有索引下标,有两种访问方式
① 直接打印
② 通过for循环进行遍历(不能使用while循环,因为没有索引下标)
'''
set2 = {10, 20, 30, 30}
print(set2)
for i in set2:
    print(i)

image-20230910110926511

四、集合的相关操作方法

1、增加方法

add():向集合中添加不重复的数据
# 定义一个空集合
set1 = set()

# 使用add()方法向集合中添加不重复的数据
set1.add(10)
set1.add(20)
set1.add(20)
print(set1)

image-20230910111925155

2、删除方法

remove():根据值删除指定元素
pop(): 随机删除集合中某个指定的元素,删除后,返回被删除的那个元素
set2 = {10, 20, 30, 40}

set2.remove(10)
print(set2)
print(set2.pop())  # 返回随机删除元素的值

image-20230910112612396

3、查询方法

if 元素 in set:返回bool类型(True or False)
if 'Jack' in set3:
    print("'Jack' exist in the set3")
else:
    print("'Jack' not exist in the set3")

标签:20,name,python,student1,--,初识,key,print,字典
From: https://www.cnblogs.com/luoluoange/p/17691309.html

相关文章

  • OpenResty获取请求参数
        ......
  • Ubuntu 22.04 LTS修改登录后的欢迎信息
    上一篇介绍了开机信息的修改,这一篇记录一下Ubuntu22.04LTS用户登录后的欢迎信息使用管理账号登录 sudosuroot 进入到/etc/update-motd.d目录下面,新建文件99-my-welcome-info新建文件代码touch99-my-welcome-info1修改当前文件权限sudochmod777......
  • Unix/Linux 系统编程学习记录
    Unix/Linux系统编程学习记录不定期更新学习笔记、心得与操作过程chapter1引言第一章学习笔记博客链接安装Linux操作系统,学习Linux基础chapter2编程背景第二章学习笔记博客链接课程来源:2021-2022-1信息安全系统设计与实现(上)的平行课程推荐好友20211120destiny......
  • [JOISC 2016] 雇佣计划 题解
    [JOISC2016]雇佣计划题解这里补充一篇自己的\(n\logn\)做法。本蒟蒻打了两棵线段树,并且进行了繁琐的分类讨论,完全被标算的树状数组吊打qwq题意:给定一个序列\(a\),有两种操作:将\(c\)位置权值改为\(d\);给定一个权值\(b\),定义集合\(S=\{i|a_i\geb\}\),对于......
  • 牛顿迭代法实现开平方
    笔算开平方的算法通常使用牛顿迭代法,也称为牛顿切线法。算法步骤如下:选择一个初始猜测值x0,一般来说可以选择1。根据牛顿迭代法的公式,计算下一个猜测值x1=(x0+a/x0)/2,其中a是待求平方根的数。重复步骤2,直到x1和x0的差值小于一个给定的精度eps,即|x1-x0|<eps。下面是......
  • HashMap的底层原理
    HashMap哈希表(HashTable)是一种用于存储键值对的数据结构,他的底层实现在jdk1.8后是数组+链表+红黑树,在jdk1.8前是数组+链表,他通过哈希函数将键映射到储存桶中,从而实现快速的插入,查找和删除操作。哈希表的实现通常包括一个数组和一个哈希函数,其中数组用于储存键值对,哈希函数将建映......
  • 视野修炼-技术周刊第53期
    笔者在GitHub开了个discussion......
  • [ABC319G] Counting Shortest Paths
    [ABC319G]CountingShortestPathsAtcoder:[ABC319G]CountingShortestPaths洛谷:[ABC319G]CountingShortestPathsProblem经典问题:求补图的最短路,边权均为\(1\),并顺带求出\(1\ton\)最短路的数量。\(n\le2\times10^5\)。Solution每次从队列中把最早遍历到的节点......
  • spring boot中使用spring-data-jpa
    springbootPOM文件中加入依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>application.yml配置:spring:datasource:url:jdbc:oracle......
  • linux常用命令大全
    lessless工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less的用法比起more更加的有弹性。在more的时候,我们并没有办法向前面翻,只能往后面看,但若使用了less时,就可以使用[pageup][pagedown]等按键的功能来往前往......