来源:Pexels字典是大家早教时期学不会的好帮手。字典是术语和定义的无序集合,这意味着:·每个数据点都有一个标识符(即术语)和一个值(即定义)。·Terms在字典中必须是唯一的,不能重复。·与列表不同,这些术语没有明确的顺序。使用大括号定义字典,使用逗号分隔成对的术语或定义。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}访问字典值的旧(坏)方式访问字典中值的传统方式就是用方括号表示法。此语法将术语的名称嵌套在方括号内,如下所示。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}print(author['username'])#jhsu98print(author['middle_initial'])#KeyError:'middle_initial'试图引用不存在的术语会导致KeyError。这会导致严重的问题,尤其是在处理不可预测的业务数据时。虽然可以将我们的语句包装在try/except或if语句中,但它更适合堆叠字典术语。author={}try:print(author['username'])exceptKeyErrorase:print(e)#'username'ifauthor['username']:print(author['username'])如果你有JavaScript背景,引用用点表示法字典值可能是有吸引力的。这在Python中不起作用。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}print(author.username)#AttributeError:'dict'对象没有属性'username'使用.get()方法来源:当Pexels想要访问字典的值时,最安全的方法是使用.get()方法。这个函数有两个参数:第一个(必需):要检索的术语的名称。可以是字符串或变量,允许动态检索术语。·第二个(可选):如果术语不存在,则使用默认值。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}print(author.get('username'))#jhsu98print(author.get('middle_initial',None))#None如果之前已经宣布过该术语,.get()的工作方式与传统的括号引用没有什么不同。如果没有定义术语,则返回默认值,这样就不必处理异常。此默认值可以是任何值,但请记住它是可选的。如果不包含默认值,则使用None的Python等价物。使用.setdefault()方法有时,您不仅希望避免在字典中出现未定义的术语,还希望您的代码自动更正其数据结构。.setdefault()与.get()具有相同的结构。但是,当一个术语未定义时,除了返回默认值外,字典的术语也将设置为该值。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}print(author.setdefault('username'))#jhsu98print(author.setdefault('middle_initial',None))#None上面的示例表明.setdefault()与方括号表示法或.get()相同。不仅如此,与.get()一样,它会在术语不存在时返回传递的默认值。它与.get()的不同之处在于它的术语和定义现在是字典的一部分,如下所示。author={"first_name":"Jonathan","last_name":"Hsu","username":"jhsu98"}print(author.setdefault('middle_initial',None))#Noneprint(author)"""{'first_name':'Jonathan','last_name':'Hsu','username':'jhsu98','middle_initial':None}"".get()和.setdefault()是引用字典值时的优秀技术。...只是需要一些时间来打破旧习惯并采用这种方法。来源:Pexels如果你不想修改原始数据,.get()是你最好的选择。如果你想改变原始数据,请使用.setdefault(),你就完成了。
