|
发表于 2023-9-4 13:25:06
|
显示全部楼层
可以使用递归来遍历嵌套字典。首先,我们定义一个空列表来存储结果。然后,我们遍历字典的键值对。如果值是一个整数,我们将其添加到结果列表中。如果值是一个字典,我们将递归调用自己来遍历该字典,并将返回的结果添加到结果列表中。最后,我们将结果列表按照学生 ID 进行排序,并返回结果。
以下是实现这个功能的代码:
- def traverse_nested_dict(data):
- result = []
- for key, value in data.items():
- if isinstance(value, int):
- result.append((key, value))
- elif isinstance(value, dict):
- result.extend(traverse_nested_dict(value))
- result.sort(key=lambda x: x[0])
- return result
- data = {
- 'a1000000': {
- 'a1000002': 76,
- 'a1000351': 50,
- 'a1003202': 59
- },
- 'a2000000': {
- 'a2002202': 56,
- 'a2002535': 57,
- 'a2005452': 79,
- 'a2200000': {
- 'a2200354': 65,
- 'a2201029': 80,
- 'a2212332': 12,
- 'a2240000': {
- 'a2249834': 87
- }
- }
- }
- }
- result = traverse_nested_dict(data)
- print(result)
复制代码
输出结果为:
- [('a1000002', 76), ('a1000351', 50), ('a1003202', 59), ('a2002202', 56), ('a2002535', 57), ('a2005452', 79), ('a2200354', 65), ('a2201029', 80), ('a2212332', 12), ('a2249834', 87)]
复制代码
这个结果是按照学生 ID 排序的元组列表,每个元组包含学生 ID 和分数。 |
|