1.字典(dict)

一.字典是容器类型(序列 ),以键值对作为元素。字典里面存的数据全是以键值对的形式出现的

b/键值对----> 键:值(key:value)

dict1 = {'key1':value1,'key2':value2 }

ditc2 = {} #空的字典

'''

键(key):要唯一,不可变的(字符串,数字,布尔,元组---->推荐使用字符串)

值(value):可以不唯一,可以是任何类型的数据。

'''

A.字典是可变的(增删改查) ----->可指的是字典中的键值对的值和个数可变

1.获取字典的元素对应的值(字典存数据,实质还是存的value,key是获取vlaue的手段)。(查)

'''

(—)

value = 字典 [key] #key不存在会报错KeyError

dict1 = {'key1':value1,'key2':value2 }

value1 = dict1 ['key1']

'''

'''

(二)

dict1 = {'key1':value1,'key2':value2 }

print(dict1.get(key1)) # 结果是value1

如果key1不存在,返回None.

'''

'''

总结:

a.确定key肯定存在的时候用 dict['key]'获取value

b.不确定key是否存在,不存在的时候不希望报错,而是想要自己对它进行特殊处理的时候使用dict.get('key')

'''

2.遍历字典(直接取到的是字典的所有key值)

'''

person = {'name':'txf','age':18,'grade':90}

for x in person:

print(x,end=' ')

结果:name age grade

'''

B.改(修改key对应的value)

'''

字典 [key] = 新值 #key是存在的

'''

C.增加(添加键值对)

'''

字典 [key] =值 #key不存在的

注意:

当key是存在的时候,表达修改,如果key不存在则表示添加。

'''

D.删(删除键值对)

'''

del 字典[key] #删除键值对

字典.pop(key) #和list的用法差不多是拿出来。

'''

二:字典相关操作

a.

'''

a.字典不支持 '+' 和 '*'

b.字典支持 in 和 not in (判断key是否存在)

c.字典支持len()

'''

b.相关的方法

1.字典.copy()

'''

拷贝字典中的所有的元素,放到一个新的字典中。

'''

'''

dict1 = {'a':1,'b':2}

dict2 = dict1 #将dict1中的地址赋给对dict2,两个变量指向同一个地址

dict3 = dict1.copy() #将dict1中的内容复制到一个新的内存区域,然后将新的地址给dict3

'''

2.dict.fromkeys(序列,默认值=None)

'''

a.将序列中的每个值作为key,默认值为value创建一个新的字典

b.注意:默认值可以不写,写的话只能写一个值

dict1 = dict.fromkeys('abcdefg','txf')

print(dict1)

{'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}

'''

3.字典.keys() #获取字典中的所有的key,以dict_keys的形式返回(可以遍历 类似list)

dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}

print(dict1.keys(),type(dict1.keys))

结果:

dict_keys(['a', 'b', 'c', 'd', 'e', 'f', 'g'])

4.字典.value() #和 字典.keys() 类似 是获取字典中的所有的value。

5.字典.items() #获取key,value以元组的形式返回(不推荐使用,消耗CPU)。

dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}

print(dict1.items())

for k ,v in dict1.items():

print(k,v,end=' ')

'''

dict_items([('a', 'txf'), ('b', 'txf'), ('c', 'txf'), ('d', 'txf'), ('e', 'txf'), ('f', 'txf'), ('g', 'txf')])

a txf b txf c txf d txf e txf f txf g txf

'''

6.字典.setdefault(key,默认值=None) #给字典添加键值对,如果key存在,则不会生效

dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf'}

dict1.setdefault('ab',123)

print(dict1)

'''

{'a': 'txf', 'b': 'txf', 'c': 'txf', 'ab': 123}

'''

7.字典1.update(字典2) #将字典2中的键值对更新到字典1中。更新方式:如果字典2的key,在字典1中是存在的,就字典2中的值取更新字典1中的值,如果不存在就添加到字典1中、

dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf'}

dict2 = {1:1,2:2}

dict2.update(dict1)

print(dict2)

'''

{1: 1, 2: 2, 'a': 'txf', 'b': 'txf', 'c': 'txf'}

'''

字典相关函数.png

2 列表和字典的组合使用

1.什么时候用列表,什么时候用字典

'''

a.保存的多个数据的类型是同一个类型的时候,用列表

b.保存的多个数据的类型不同,就使用字典。

'''

2.字典里面可以有list,list里面也可以有字典

a ={1:[1,2],2:[2,3]}

b =[{1,2,3},4,4]

student_system = {'class_name':'python1806',

'students':[

{'name':'student1','age':21,'id':'001'},

{'name':'student2','age':22,'id':'002'},

{'name':'student3','age':23,'id':'002'}

]

}

'''

22

'''

'''

#学生管理系统

# 1.一个系统可以存储多个学生

# # 2.一个学生可以存储:姓名,电话,籍贯,专业,学号等等

# # 3.添加学生

# # 4.删除学生

# # 5.修改学生的信息

student_system = {'class_name':'python1806',

'students':[

{'name':'student1','age':21,'id':'001'},

{'name':'student2','age':22,'id':'002'},

{'name':'student3','age':23,'id':'003'}

]

}

print(student_system['students'][1]['age']) # 打出这个 22

student_system['students'][1]['name'] = 'txf' # 把student2变成txf

# 添加一个学生信息

dict1 = {'name': 'student4','age': 24,'id': '004'}

student_system['students'].append(dict1)

#删除学生信息

user_input = input('请输入学生的姓名:')

for x in student_system['students'][:]:

if x['name'] == user_input:

student_system['students'].remove(x)

else:

print('系统没得这个人的,请重新输入:')

print(student_system)

'''

3.集合(set)

集合是python中的一种类型:无序的,可变的,值是唯一的

a.声明一个集合

'''

set1 = {1,2,3,4,5,'abc',True}

print(set1,type(set1)

set2 = set('asakjdhksawawda') #将其他的序列转换成集合,自带一个去重的功能

print(set2)

{1, 2, 3, 4, 5, 'abc'}

{'a', 'k', 'h', 's', 'j', 'w', 'd'}

'''

'''

注意:除了容器类型,其他的基本都可以(数字,布尔和字符串是可以的)

'''

b.集合里面的操作

A.获取元素(集合是不能单独获取其中的某一个元素的)只能遍历获取每个元素(查)

'''

for x in set3:

print(x)

'''

B.增(添加元素)

1.集合.add('good')

'''

set3.add(12)

set3.add('wda')

'''

2.集合1.update(集合2) # 将集合2的元素添加到集合1(有过滤的)

'''

set3.update()

'''

3.删

集合.remove()

'''

set3.remove()

set3.clear() #全部删 结果是-----> set()

'''

C.数学相关的集合运算

'''

a.判断包含情况:

集合1 >=集合2 #判断集合1是否包含集合2

集合1 <= 集合2 # 判断集合2是否包含集合1

b.求并集: |

集合1 | 集合2 #求并集

c.求交集:&

集合1 & 集合2 #求交集

d.求差集: -

集合1 - 集合2 #求差集

e.求补集:^

集合1-集合2 #集合1和集合2除了公共部分剩下的

'''

作业

作业.png

number_id = 0

student_message = {str(number_id):['stu1','男',123,'吃']}

def add_student(n,message_list):

user_name = input('请输入你的名字:')

user_sex = input('请输入你的性别:')

user_tel = input('请输入你的电话:')

user_hobby = input('请输入你的爱好:')

str1 = str(n)

message_list[str1] = [user_name,user_sex,user_tel,user_hobby]

def select_student(message_list):

user_input = input('请输入姓名或者学号:')

print_count = []

if user_input.isdigit():

user_message = message_list[user_input]

print(user_message)

print('姓名:%s' % user_message[0],end=' ')

print('学号:%s' % user_input)

print('性别:%s' % user_message[1],end=' ')

print('电话:%s' % user_message[2],end=' ')

print('爱好:%s' % user_message[3])

elif user_input.isalpha():

message_dict = message_list.values()

for x in message_dict:

for y in x:

if y == user_input:

for id in message_list:

if message_list[id][0] == user_input:

print_count.append(id)

if print_count.count(id) <= 1:

print('姓名:%s' % user_input,end=' ')

print('学号:%s' % id,end=' ')

print('性别:%s' % message_list[id][1],end=' ')

print('电话:%s' % message_list[id][2], end=' ')

print('爱好:%s' % message_list[id][3])

else:

print('请重新输入')

select_student(message_list)

def del_student(message):

user_input = input('请输入想删除的姓名或者id:')

if user_input.isdigit():

message.pop(user_input)

else:

count = 1

print_count = []

message_dict = message.values()

for x in message_dict:

for y in x:

if y == user_input:

for id in message:

if message[id][0] == user_input:

print_count.append(id)

a = {id: [y,message[id][1],message[id][2],message[id][3]],count:'None'}

if print_count.count(id) <= 1:

print(count,' ',end=' ')

print('姓名:%s 学号:%s 性别:%s 电话:%s 爱好:%s' % (a[id][0],id,a[id][1],a[id][2],a[id][3]))

print(' ')

count += 1

else:

print("输入错误")

del_student(message)

else:

user_select = input('请输入想删除的选项:')

message.pop(user_select)

# return (message)

def select_all_student(student_message):

for dict_info in student_message:

message = student_message[dict_info]

print('姓名:%s 学号:%s 性别:%s 电话:%s 爱好:%s' % (message[0],dict_info,message[1],message[2],message[3]))

def update_student(student_message):

user_input1 = input('请输入你的id:')

user_input2 = input('请输入想修改的序号:1-姓名,2-性别,3-电话,4-爱好:请输入对应的数字:')

user_input3 = input('请输入新的内容:')

student_message[user_input1][int(user_input2)] = user_input3

def main(number_id):

while True:

print('==================================================')

print(' ' * 8 + '学生管理系统' + '')

print('1.添加学生')

print('2.查看学生')

print('3.删除学生')

print('4.查看所有学生信息(管理员)')

print('5.修改学生信息')

print('6.退出')

print('==================================================')

user_input1 = input('请输入想输入的:')

if not user_input1.isdigit():

print('请输入对应的数字:数字!!!!')

else:

user_input = int(user_input1)

if user_input ==6:

break

elif user_input == 1:

add_student(number_id+1,student_message)

number_id += 1

elif user_input == 2:

select_student(student_message)

elif user_input == 3:

del_student(student_message)

elif user_input == 5:

update_student(student_message)

elif user_input == 4:

a = input('请输入管理员姓名:')

b = input('请输入管理密码:')

if a == 'stu1' and b == 'stu1':

select_all_student(student_message)

else:

print('输入错误,请重新输入')

else:

print('还没得这个功能的-----')

if __name__ == '__main__':

main(number_id)

'''

OK

'''

大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...相关推荐

  1. python程序设计实验七_Python程序设计实验报告七:组合数据类型

    安徽工程大学 Python程序设计实验报告 班级物流192姓名芦靓学号3190505217成绩 日期2020.5.27指导老师修宇 [实验名称]实验七 组合数据类型 [实验目的] 熟悉通过序列索引迭代 ...

  2. 实验七:掌握基本的MapReduce编程方法 (JAVA+Python实现)(编程实现文件合并和去重操作,编写程序实现对输入文件的排序,对给定的表格进行信息挖掘)

    一.实验目的: 1. 理解MapReduce的工作机制: 2. 掌握基本的MapReduce编程方法 3. 重点理解map过程,shuffle过程和reduce过程 二.实验环境: Hadoop+Ec ...

  3. python的实验报告怎么写_学号:20191221,《python实验设计》实验报告三

    学号 2019-2020-2 <Python程序设计>实验三讲述 课程:<Python程序设计> 班级: 1912 姓名: 何应霆 学号:20191221 实验西席:王志强 实 ...

  4. Python课本第2章习题参考答案(第二版)(Python绘制蟒蛇,中美汇率转换,等边三角形,叠加等边三角形,无角正方形,六角形,正方形螺线)...

    2.1   实例1的修改,采用eval(input(<提示内容>))替换现有输入部分,并使输出的温度值为整数. 2.2   汇率兑换程序.按照温度转换程序的设计思路,按照1美元=6人民币汇 ...

  5. 南京邮电大学C语言实验报告五

    实验五:指针与字符串实验 实验题目(1)[见实验教材实验六的题目2]:编程exp6_2.c,现有整型变量x,y,调用交换函数以期实现两个值的交换.下表中4种不同的定义及调用分别进行测试并填写表格. 表 ...

  6. 南京邮电大学C语言实验报告5v2(仅供参考)

    实验五 指针与字符串实验 一. 实验目的和要求 (1)重点掌握一级指针的定义与使用,会利用一级指针进行间接访问等操作.通过调试器观察分析程序的运行情况,理解指针与指针所指向的内容之间的关系,理解指针间 ...

  7. python数学实验与建模_Python数学

    python数学实验与建模 In this tutorial, we will learn about Python Math module and its functions. In the pre ...

  8. 操作系统真象还原实验记录之实验七:加载内核

    操作系统真象还原实验记录之实验七:加载内核 对应书P207 1.相关基础知识总结 1.1 elf格式 1.1.1 c程序如何转化成elf格式 写好main.c的源程序 //main.c int mai ...

  9. 实验七 MapReduce编程进阶

    实验七 MapReduce编程进阶 答案在链接里https://blog.csdn.net/weixin_45818379/article/details/117790528

最新文章

  1. ubuntu 安装 CUDA、 cuDNN 的tips
  2. 学习URLRewriter.dll的使用
  3. php 文件上传$_FILES中error返回值详解
  4. 【万里征程——Windows App开发】使用华丽丽的字体
  5. 免费QQ币:永不过期的刷QQ币技巧共享
  6. visual studio 调试php,使用visual studio code调试php代码
  7. 【计算机网络】Stanford CS144 学习笔记
  8. 14期 《星星之火,可以燎原》4月刊
  9. Tomocat:安装完成,显示HTTP Status 404
  10. 只需7步,魔方6面即刻还原!
  11. 绝对定位元素的margin如何设置
  12. nv 9系显卡测试软件,支持全部8、9系显卡物理加速!NV新驱动消息泄漏
  13. 32位linux升级64位系统下载地址,使用i386-32位Linux不能升级到amd64位,只能全新安装Linux-amd64版...
  14. 计算机屏幕尺寸不是全屏,电脑屏幕有黑边撑不满怎么办_电脑屏幕不能全屏显示的解决方法...
  15. ubuntu Segmentation Fault错误原因
  16. 华为平板M3能用鸿蒙吗,华为平板M3怎么样 麒麟950处理器搭配快充只要1888!
  17. python get方法列表参数_python中requests库get方法带参数请求
  18. 手机工行显示服务器,工行手机银行服务器安全证书验证失败
  19. HDU 5374 模拟俄罗斯方块
  20. iOS App启动+广告思路

热门文章

  1. wordpress woodstock主题导入demo xml文件 execution time out
  2. 你可能不知道的switch
  3. mysql错误1300怎么解决_pt-osc 变更时遇到 “MySQL error 1300” 报错问题解决
  4. rtsp 测试地址_TranServer:简单实现浏览器播放RTSP流
  5. 对话系统(四)- RNN
  6. mac笔记本怎么外接显示屏_苹果MAC笔记本怎么外接显示器?
  7. 期末复习、化学反应工程科目(第二章)
  8. leetcode 刷题140 141
  9. 十七、深入Python异常处理
  10. leetcode刷题 66 67