字典数据结构与面试问题解析

字典是一种无序的数据值集合,即在花括号内的键值对。字典中的键是唯一的(不能重复),而值可以重复。由于字典在项目中的广泛应用,面试中经常会出现关于字典的问题。因此,对于每个有志于成为数据科学家的人来说,掌握字典的相关知识是非常重要的。本文将讨论一些关键的理论和实践问题,帮助求职者深入理解字典。

面试中的字典问题

问题1:什么是字典?字典是由键值对组成的集合,每对键值对都是唯一的。可以使用空花括号{}来创建字典。例如:

dictionary1 = {‘a’: 1, ‘b’: 2, ‘c’: 3}

问题2:字典是否区分大小写?是的,字典是区分大小写的,即键名相同但大小写不同的键被视为不同的键。例如,‘apple’和‘APPLE’将被视为两个不同的键。

问题3:创建字典的不同方式有哪些?有三种不同的创建字典的方法:

  1. 创建一个空字典
  2. Dictionary1 = {} print(Dictionary1) # 输出:{} key1 = 'a' value1 = 1 Dictionary1[key1] = value1 # 输出:{'a': 1}
  3. 使用dict()方法创建字典
  4. Dictionary1 = dict({1: 'a', 2: 'b'}) print(Dictionary1) # 输出:{1: 'a', 2: 'b'}
  5. 创建字典时每个元素都是一对
  6. Dictionary1 = dict([(1,'a'), (2, 'b')]) print(Dictionary1) # 输出:{1: 'a', 2: 'b'}
  7. 直接创建字典
  8. Dictionary1 = {1: 'a', 2: 'b'} print(Dictionary1) # 输出:{1: 'a', 2: 'b'}

问题4:什么是嵌套字典?如何创建?嵌套字典是指字典中的字典。例如:

dictionary1 = {1: {'roll': '101', 'name': 'sam'}, 2: {'roll': '102', 'name': 'ram'}} print(dictionary1) # 输出:{1: {'roll': '101', 'name': 'sam'}, 2: {'roll': '102', 'name': 'ram'}}

嵌套字典的元素可以通过以下方式访问:

print(dictionary[1]['roll']) # 输出:101

问题5:如何在字典中添加元素?字典中添加元素有多种方法:

  1. 一次添加一对键值
  2. Dict1 = {} Dict1[0] = 'a' Dict1[1] = 'b' print("添加元素后的字典: ", Dict1) # 输出:{0: 'a', 1: 'b' }
  3. 向单个键添加多个值
  4. Dict1['values'] = 4, 5, 6 print("向键添加多个值后的字典: ", Dict1) # 输出:{0: 'a', 1: 'b', 'values': (4, 5, 6) }
  5. 添加嵌套键值对
  6. Dict1['Nested'] = {1: 'Analytics', 2: 'Life'} print(Dict1) # 输出:{0: 'a', 1: 'b', 'values': (4, 5, 6), 'Nested': {1: 'Analytics', 2: 'Life'} }

问题6:讨论字典使用的不同方法。字典使用的不同方法包括:

  1. clear():用于删除字典中的所有元素,即创建一个空字典。
  2. dict2 = {1: 'Analytics', 2: 'Vidhya'} dict2.clear() print(dict2) # 输出:{ }
  3. get():用于获取指定键的值。
  4. x = dict2.get(2) print(x) # 输出:Vidhya
  5. copy():用于返回字典的副本。
  6. dict3 = dict2.copy() print(dict3) # 输出:{1: 'Analytics', 2: 'Vidhya'}
  7. items():用于返回由键值对组成的元组列表。
  8. Dict1 = {1: 'Analytics', 2: 'Vidhya'} print(Dict1.items()) # 输出:dict_items([(1, 'Analytics'), (2, 'Vidhya')])
  9. keys() 和 values():分别返回字典中的所有键和值。
  10. Dict1.keys() Dict1.values() # 输出:dict_keys([1, 2]) 和 dict_values(['Analytics', 'Vidhya'])
  11. update():此方法用于更新字典中键的值。
  12. Dict1.update({2:"Blogathon"}) print(Dict1) # 输出:{1: 'Analytics', 2: 'Blogathon'}

问题7:从给定列表创建字典。例如:

def Convert_list_dict(dict2): x = iter(dict2) res_dct1 = dict(zip(x, x)) return res_dct1 dict1 = [1, 'a', 2, 'b', 3, 'c'] print(Convert_list_dict(dict1)) # 输出:{1: 'a', 2: 'b', 3: 'c'}

这里,zip()函数接受可迭代对象(可以是两个以上)并将它们组合成元组。

问题8:从字典创建元组列表。

dict1 = {1: 'a', 2: 'b', 3: 'c'} lst1 = list(dict1.items()) print(lst1) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]

问题9:从字典创建列表。假设给定的字典是:

dict1 = {1: 'a', 2: 'b', 3: 'c'} x = list(dict1.keys()) y = list(dict1.values()) for i in y: x.append(i) print(x) # 输出:[1, 2, 3, 'a', 'b', 'c']

问题10:如何从字典中删除键值对?可以使用‘del’关键字删除键值对,如下所示:

del dict1[1] print(dict1) # 输出:{2: 'b', 3: 'c'}

问题11:字典是可变的吗?‘可变’意味着可以在字典中添加、删除或更新键值对。是的,字典是可变的。例如:

Dict1 = {1: 'a', 2: 'b', 3: 'c', 4: 'd'} Dict1[2] = 'h' print(Dict1) # 输出:{1: 'a', 2: 'h', 3: 'c', 4: 'd'}

问题12:给定两个列表,从它们创建字典。输入:[1, 2, 3, 4, 5], ['a', 'b', 'c', 'd', 'e']。输出:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}。

list1 = [1, 2, 3, 4, 5] list2 = ['a', 'b', 'c', 'd', 'e'] dict1 = {} for i, j in zip(list1, list2): dict1[i] = j print(dict1) # 输出:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} dict1 = {i:j for i,j in zip(list1, list2)} print(dict1) # 输出:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} dict1 = {2: 'Apple', 1:'Mango', 3:'Orange', 4:'Banana'} print(sorted(dict1.keys())) for key in sorted(dict1): print("按键排序的字典:", (key, dict1[key])) # 输出:[1, 2, 3, 4] # 1: Mango # 2: Apple # 3: Orange # 4: Banana
  1. 讨论了字典的基本概念,使读者熟悉它。
  2. 学习了如何在字典上执行各种操作,如添加和删除键值对。
  3. 讨论了可以用来操作和处理字典的各种函数。
  4. 此外,还讨论了面试中可能遇到的几个关于字典的编程问题。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485