MST

星途 面试题库

面试题:Python中get()方法结合默认值的复杂应用

假设有一个嵌套字典`nested_dict = {'person1': {'name': 'Bob', 'hobbies': ['reading', 'painting']}, 'person2': {'name': 'Charlie'}`,现在要获取`person1`的`hobbies`列表中的第三个元素,如果该元素不存在,返回默认值'unknown'。请使用`get()`方法来实现这个功能,并解释代码的执行逻辑。
37.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
nested_dict = {'person1': {'name': 'Bob', 'hobbies': ['reading', 'painting']}, 'person2': {'name': 'Charlie'}}
result = nested_dict.get('person1', {}).get('hobbies', ['unknown'])[2] if len(nested_dict.get('person1', {}).get('hobbies', ['unknown'])) >= 3 else 'unknown'

print(result)

代码执行逻辑解释

  1. 获取person1对应的字典
    • nested_dict.get('person1', {}),这里使用get方法从nested_dict中获取键为person1的值。如果person1键不存在,返回一个空字典{},这样可以避免在后续操作中出现KeyError
  2. 获取hobbies列表
    • 对上一步返回的字典再使用get方法,即.get('hobbies', ['unknown']),获取hobbies列表。如果hobbies键不存在,返回包含默认值['unknown']的列表。
  3. 获取第三个元素
    • 使用条件表达式判断hobbies列表的长度是否大于等于3。如果是,返回列表的第三个元素(索引为2);如果不是,返回默认值'unknown'

这里整体通过get方法逐步获取数据,并通过条件判断确保在元素不存在时返回合适的默认值,避免程序因索引越界等问题出错。