如何用Python字典获取特定记录数据?以查询Anand数学成绩为例
问题解答
1. 给定代码能否获取Anand的数学成绩?
可以。
因为marksList转换为字典marksDict后,所有科目成绩列表的索引与姓名列表的索引严格一一对应:marksDict['name'][0]是Anand,marksDict['maths'][0]正好是他的数学成绩85,所以这段代码能正确获取目标成绩。
2. 使用for循环的替代实现方式
方式一:遍历原始列表获取对应数据
先定位姓名列表和数学成绩列表,再找到Anand的索引并提取成绩:
marksList = [['name', ['Anand', 'Bhanu', 'Chetna', 'Durga', 'Eshwar']], ['english', [65,83,47,57,78]], ['hindi', [78,64,84,59,65]], ['maths', [85,74,74,95,84]], ['science', [58,94,59,78,68]], ['social', [72,65,82,49,65]]] name_list = None maths_scores = None # 遍历原始列表,分离姓名和数学成绩数据 for item in marksList: if item[0] == 'name': name_list = item[1] elif item[0] == 'maths': maths_scores = item[1] # 提取Anand的数学成绩 if name_list and maths_scores: anand_idx = name_list.index('Anand') anand_maths_score = maths_scores[anand_idx] print(anand_maths_score) # 输出:85
方式二:枚举姓名列表匹配索引
转字典后,通过枚举姓名列表的索引和值,直接匹配Anand并取对应数学成绩:
marksList = [['name', ['Anand', 'Bhanu', 'Chetna', 'Durga', 'Eshwar']], ['english', [65,83,47,57,78]], ['hindi', [78,64,84,59,65]], ['maths', [85,74,74,95,84]], ['science', [58,94,59,78,68]], ['social', [72,65,82,49,65]]] marksDict = dict(marksList) anand_maths_score = None # 枚举姓名列表的索引与元素,找到Anand的位置 for idx, name in enumerate(marksDict['name']): if name == 'Anand': anand_maths_score = marksDict['maths'][idx] break print(anand_maths_score) # 输出:85
方式三:分两次遍历原始列表
先找到Anand的索引,再单独遍历获取对应数学成绩:
marksList = [['name', ['Anand', 'Bhanu', 'Chetna', 'Durga', 'Eshwar']], ['english', [65,83,47,57,78]], ['hindi', [78,64,84,59,65]], ['maths', [85,74,74,95,84]], ['science', [58,94,59,78,68]], ['social', [72,65,82,49,65]]] anand_idx = -1 # 第一次遍历找到Anand的索引 for item in marksList: if item[0] == 'name': anand_idx = item[1].index('Anand') break # 第二次遍历提取对应数学成绩 if anand_idx != -1: for item in marksList: if item[0] == 'maths': print(item[1][anand_idx]) # 输出:85 break
内容的提问来源于stack exchange,提问作者srk
相关产品推荐
相关产品推荐

