面试题答案
一键面试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)
代码执行逻辑解释
- 获取
person1
对应的字典:nested_dict.get('person1', {})
,这里使用get
方法从nested_dict
中获取键为person1
的值。如果person1
键不存在,返回一个空字典{}
,这样可以避免在后续操作中出现KeyError
。
- 获取
hobbies
列表:- 对上一步返回的字典再使用
get
方法,即.get('hobbies', ['unknown'])
,获取hobbies
列表。如果hobbies
键不存在,返回包含默认值['unknown']
的列表。
- 对上一步返回的字典再使用
- 获取第三个元素:
- 使用条件表达式判断
hobbies
列表的长度是否大于等于3。如果是,返回列表的第三个元素(索引为2);如果不是,返回默认值'unknown'
。
- 使用条件表达式判断
这里整体通过get
方法逐步获取数据,并通过条件判断确保在元素不存在时返回合适的默认值,避免程序因索引越界等问题出错。