You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:28:01