您的位置:首页 > 健康 > 养生 > 小型crm系统_低价自适应网站建设优化建站_软件定制_赣州seo

小型crm系统_低价自适应网站建设优化建站_软件定制_赣州seo

2024/12/23 9:12:46 来源:https://blog.csdn.net/matrixlzp/article/details/143259443  浏览:    关键词:小型crm系统_低价自适应网站建设优化建站_软件定制_赣州seo
小型crm系统_低价自适应网站建设优化建站_软件定制_赣州seo

在早期的Python2版本中,可以使用 dict.has_key()方法来判断一个键是否存在于字典中。

在Python3中,dict.has_key()方法被废弃了,不能再被使用。如果在Python3中尝试使用dict.has_key()方法会导致 AttributeError异常。

那在Python3中要如何判断一个键是否存在于字典中呢?

student = {'name': '小明', 'age': 30, 'gender': 'male'}
if ( student.has_key('name') ):print( studnet['name'] )

26c28877ab2543f4a29d0b427dba4b91.png

 一、使用 in 关键字来判断(推荐)

student = {'name': '小明', 'age': 30, 'gender': 'male'}
if 'name' in student:print( "键 'name' 存在于字典student中" )
else:print( "键 'name' 不存在于字典student中" )
if 'grade' in student:print( "键 'grade' 存在于字典student中" )
else:print( "键 'grade' 不存在于字典student中" )

41e896a95d224137ae1afb6e72c8d1bc.png

二、使用 dict.get() 方法

dict.get(key[, default=None])
返回指定键所对应的值,如果键不在字典中返回default值, default 默认为 None

student = {'name': '小明', 'age': 30, 'gender': 'male'}
if student.get('name'):print( "键 'name' 存在于字典student中" )
else:print( "键 'name' 不存在于字典student中" )
if student.get('grade'):print( "键 'grade' 存在于字典student中" )
else:print( "键 'grade' 不存在于字典student中" )

1ced83d73a884c33a8184a640582195b.png

使用 dict.get() 有一个不好的地方,就是当 key 不存在于字典当中的时候,结果返回 None,

这个在 if 判断的时候,会跟 0 产生一些混淆,造成预期外的BUG 

student = {'name': '小明', 'age': 30, 'gender': 'male', 'score': 0}
if student.get('score'):print( "键 'score' 存在于字典student中" )
else:print( "键 'score' 不存在于字典student中" )

701057f79d8e4fe4af8019cbf28adb87.png

score 键是存在于字典中的,但是结果却说不存在。

造成这个问题的原因,是 score 的值是 0,它在 if 判断的时候跟 None 一样,都被判定为 false,解决问题的方式,就是 student.get('score') != None 人为显式地判空,但是这样就不如 in 关键字来的简洁。

student = {'name': '小明', 'age': 30, 'gender': 'male', 'score': 0}
if student.get('score') != None:print( "键 'score' 存在于字典student中" )
else:print( "键 'score' 不存在于字典student中" )

e2d434a1888a4c2cb15dfe61d1147bfa.png

三、实战案例

leecode 第一题:

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

解题的思路,就是利用字典的 key 来保存 nums 的值,用字典的 value 来保存 nums 的索引。通过字典的 hash 定位,快速查找到符合 target - item 表达式的 索引。

时间复杂度为 O(n) 只有一次遍历。  

def twoSum(nums, target):result = []my_dict  = {}for i in range( len(nums) ):item = nums[i]other = target - itemif my_dict.get(other) != None:result.append( my_dict.get(other) ) result.append( i )return result# 这两种写法都可以# if my_dict.get( item ) == None: if item not in my_dict:my_dict[item] = i   return resultsum = twoSum([2, 7, 11, 15], 9)
print( sum )
sum = twoSum([3,2,4], 6)
print( sum )
sum = twoSum([3,3], 6)
print( sum )

df002b8c07a943f1b3d273e469ccf6ee.png

四、总结

过尽千帆,依然算法。

1、在Python3中,dict.has_key()方法已经被废弃,不能再被使用。

2、在实际开发中,可以使用in关键字或dict.get()方法来判断键是否存在。

3、推荐用 in 关键字,简洁、高效,不容易出错。

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com