Python学习--Day 11

077.回顾上午内容

  • 与面向对象的class相比,字典可以在存储少量的特征数据时发挥较大的作用。

078.字典的添加

  • 增加元素、修改元素
    格式:dict名称[key] = value,key值不重复则添加,key值重复则发生修改。
dict6 = {}
dict6['name'] = 'Lucy'
print(dict6)
dict6['name'] = 'Tom' # 同名的key不会再次增加,会替换
print(dict6)
  • 实战项目
    弹幕有人不理解为啥还要放到database列表中,我个人觉得老师是在模拟以后的开发过程,用字典短暂接收,再以字典的形式传输给数据库,数据库暂时没学就先用的列表,我理解是这样的。
database = []
while True:
	username = input('please input username:')
	password = input('please input password:')
	# repasseord = input('please input repassword:')
	email = input('please input email:')
	phone = input('please input phone:')
	user = {}
	user['username'] = username
	user['password'] = password
	user['email'] = email
	user['phone'] = phone
	# 保存到database列表中
	database.append(user)
	ack = input('continue?y/n')
	if ack == 'n':
		break
print(database)

079.字典的item

  • 字典的查找
    特点:key在字典中是唯一的,value不唯一。
    通过dict1[key]找到value的内容,key必须与创建的时候一样。
    字典中找元素与列表不同,字典中没有下标的说法,仅列表和元组有下标。
dict1 = {'1':'张三','2':'李四','3','王五'}
dict['2'] #注意一定要使用'2'
  • 字典的遍历(字典与for循环)
    前两个代码是尝试遍历的例子,可以作为扩展知识学习。
dict2 = {'张三':100,'李四':45,'王五':78}
for key,value in dict2
	print(key,value)
# 输出结果是:
# 张 三
# 李 四
# 王 五
# 遍历失败,仅仅遍历了key
for i in dict1
	print(i)
# 输出结果是:
# 1
# 2
# 3
# 仅仅遍历了key
  • 字典内的函数:items()、values()、keys()
  • items()
    items()将字典转回成列表中包含元组的形式。
dict2 = {'张三':100,'李四':45,'王五':78}
print(dict2.items())
# 输出结果:dict_items([('张三',100),('李四',45),('王五',78)])
  • 使用items()进行字典的遍历
    for key, value in dict2.items()借用items()能够将字典变为元组或列表的操作,再使用for i in 可遍历对象对内容进行遍历。
    谨记:dict.items()是一个列表或元组。
    如下是两个遍历方法,第二种更常用。
for i in dict2.items():
	print(i)
# 这是遍历的第一种方法
# 由于i是一个元组的格式,我们就会再次得到第二种改进的方法
for key,value in dict2.items():
	print(key,value)
# 遍历的第二种方法

080.字典之获取操作(get,items,values,keys)

  • values()——取出字典中的所有值,并将这些值放到一个列表中。
    Attention:因为是放到列表中,可以使用for对dict.values()进行遍历。
 result = dict2.values()
 print(result)
 for i in dict2.values():
 	print(i)
  • 同理,keys(),获取所有的Key并将他们放到列表之中。
  • 字典使用in,寻找的内容是key,判断内容有没有在key中出现,与value无关。
dict1 = {'1':'张三','2':'李四','3','王五'}
ans = '1' in dict1
print(ans) # true
ans1 = '张三' in dict1
print(ans1) #False
  • 提供了错误的key,并使用dict[key](key不存在),会报错:KeyError: '你输入的错误的key的名称'

  • 字典的内置函数get()——dict.get(key),找到返回Value,取不到值就返回None不会报错。
    dict.get(key [,default])——default作为默认值,如果没有key就返回默认值。
    get照比in更加常用

  • get()特定值的查找。

  • values(),右边一列的查找。

  • keys(),左边一列的查找。

  • items(),一对一对找

081.字典之删除操作

  • 不依赖于字典的方法——del,根据key找元素
    del dict[key]——删除key对应的元素,如果key不存在,返回一个KeyError。
dict1 = {'张三':100,'李四':45,'王五':78}
del dict1['王五']
print(dict1)
# 输出结果是:{'张三':100,'李四':45}
  • 字典内置的函数——pop()
    pop(key[,default])——根据key删除对应的键值对,删除成功就返回key对应的value;如果输入的key不存在,默认返回None,指定了default部分就返回default的内容。
    小结:pop()更加安全,比报错的del更好,开发起来用的更顺手。
 dict1 = {'张三':100,'李四':45,'王五':78}
 result = dict1.pop('李四') 
 print(result) # 打印结果是45
 print(dict1)
  • popitem()——随机删除字典中的键值对(真正运行时,一般是从末尾删除元素)
    dict1.popitem()——‘随机’删除元素,不用指定键值对,直接调用就行。
  • clear()—— 将字典清空
  • 其他的内置方法:update()——没有返回值,将列表中的数据更新,类似列表的+
    dict1.update(dict2)——将dict1中和dict2中都有的key的value统一变成dict2中的value,dict1中没有的从dict2中获取并加入。
dict1 = {0:'tom',1:'jack',2:'Lucy'}
dict2 = {0:'lily', 4:'rudy'}
dict1.update(dict2)
print(dict1)
# 输出结果:
# {0:'lily',1:'jack',2:'lucy',4:'rudy'}
  • 字典的+是不被支持的,两个字典的合并使用update()就行。
  • fromkeys()——将列表转成字典
    用法:dict.fromkeys(list1)——注意,前面的调用对象必须是dict,不能是dict类型的dict1。
    dict.fromkeys(list1,index)——将所有的list1中的对象的value赋值为index。
    fromkeys(seq[,default])——将seq转变为字典的形式,如果没有指定默认的value则用None,指定了default则用default替代None这个value值。
list1 = ['aa','bb','cc']
new_dict = dict.fromkeys(list1)
print(new_dict)
# 输出结果:
# {'aa':None, 'bb':None, 'cc':None}
new_dict = dict.fromkeys(list1,10)
print(new_dict)
# 输出结果:
# {'aa':10, 'bb':10, 'cc':10}

082.回顾

回顾了上面讲过的字符串、列表、元组、字典等等。

数据类型列表元组字典
关键字listtupledict
特点1保存多个元素,元素有顺序保存多个元素以键值对的形式保存元素
特点2可以通过下标找到对应的元素不可以增删改,可以查询支持键值对的增删改查
内置函数append、extend、insert、remove、pop、clear、sort、reverse、index、countindex、countdict[key] = value、pop、popitem、clear、items、values、keys、fromkeys

083.集合操作之添加和删除

  • 集合的关键字set,是一个无序的、不重复的元素
  • 集合声明:s1 = set(),字典是成对出现的,而集合是单独出现的。
    # dict {key:value, key:value, key:value}
    # set {元素1,元素2,元素3}
  • 注意,创建空集合只能使用set(),使用{}是创建字典
  • 但是可以使用set{1,3,7}创建集合,因为放进去的不是键值对。
  • 还可以使用类型转换使列表或元组变为集合,转变过程中自动去除重复项目,是数字的话还会自动排序。【面试的应用:列表的快速去重可以使用集合】
list1 = [1,2,4,5,6,3,4,5,6,4,4]
s3 = set(list1)
print(s3)
# 输出结果
# {1, 2, 3, 4, 5, 6}
  • 集合的增加元素:add()
    而且输入信息后再返回,通常是无顺序的。
s1 = set()
s1.add('hello')
s1.add('lucy')
s1.add('pjuy')
print(s1)
# 输出结果:
# {'hello', 'lucy', 'pjuy'}
  • update()
    set1.update(tuple1)将元组或列表的内容逐次添加到集合中。
s1 = {'hello', 'lucy', 'pjuy'}
t1 = ('林志玲','言承旭')
s1.update(t1)
print(s1)
# 输出内容
# {'pjuy', '林志玲', 'lucy', '言承旭', 'hello'}
# 将t1内的元素加入到集合中
s1.add(t1)
print(s1)
# 输出内容:
# {'pjuy', ('林志玲', '言承旭'), '林志玲', 'lucy', '言承旭', 'hello'}
# 此时是将t1元组作为一个整体加入到集合中
  • 删除remove()、pop()、clear()、discard()
    set1.remove(ele)——若ele在set中,将ele从集合中移除;如果元素ele不存在,就报错:KeyError
    set1.pop()——随机删除,随机删除一个元素。
    set1.clear()——将集合清空
    set1.discard()——类似remove,但在移除不存在的元素的时候不会报错,也就是说对于集合的删除元素,使用discard()。

花书到了,粗略看一眼差点吓死自己。。。好多数学符号都忘记了啊,还有好多是根本就没见过的。对数学的恐惧又一次袭来。今天还顺便收拾了旧物,发现自己左一本右一本的数学错题集都是一两页的,这也就不难解释为什么自己的数学从高中以来就有问题,再也不敢觉得自己高考的131是失误了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,异常处理是非常重要的一部分。当程序运行时如果出现错误,如果没有异常处理,程序就会崩溃。为了避免这种情况,Python提供了异常处理机制。 在Python中,异常处理语句使用 `try` 和 `except` 关键字来实现。`try` 语句块中包含可能会发生异常的代码,如果这段代码出现了异常,则会跳转到 `except` 语句块中执行异常处理代码。 下面是一个简单的例子: ```python try: num = int(input("请输入一个整数:")) print(10/num) except ZeroDivisionError: print("除数不能为0") except ValueError: print("输入的不是整数") ``` 在上面的代码中,我们尝试将用户输入的字符串转换为整数,并将其用作除数计算 10/num。如果用户输入的是 0,则会触发 ZeroDivisionError 异常。如果用户输入的不是整数,则会触发 ValueError 异常。如果发生异常,则会跳转到对应的 except 语句块中执行处理代码。 除了可以指定具体的异常类型,也可以使用 `except Exception` 来捕获所有异常。例如: ```python try: num = int(input("请输入一个整数:")) print(10/num) except Exception as e: print("发生异常:", e) ``` 在上面的代码中,如果发生任何异常,都会跳转到 `except` 语句块中执行处理代码,并将异常信息打印出来。 除了 `try` 和 `except`,还有 `finally` 关键字,它指定的代码块无论是否发生异常都会执行。例如: ```python try: num = int(input("请输入一个整数:")) print(10/num) except Exception as e: print("发生异常:", e) finally: print("程序执行完毕") ``` 在上面的代码中,无论是否发生异常,都会执行 `finally` 中的代码,即输出“程序执行完毕”。 总之,在Python中,异常处理是非常重要的一部分,它可以有效避免程序崩溃,提高程序的健壮性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值