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

新手求教:如何按姓名主键对字典列表进行索引访问?

实现通过姓名访问并修改字典列表中的属性

嘿,作为编程新手,这个需求其实非常常见!你当前的players是一个字典列表,要实现像players["John"]["score"]=newScore或者players["john"]["Played"] = players["john"]["Played"]+1这样的操作,核心是把列表转换成以姓名为键的映射字典,这样就能直接通过姓名(甚至支持大小写不敏感)来访问和修改对应条目啦。

步骤1:将列表转换为姓名映射的字典

首先我们把原列表转成一个以姓名作为键的字典,这样就能直接通过姓名索引。这里提供两个版本:

版本1:保留原姓名大小写

如果你的场景里姓名大小写严格区分(比如"John"和"john"是不同人),用这个版本:

players = [{'name': 'John', 'points': '27', 'Played': '6'}, {'name': 'Emil', 'points': '43', 'Played' : '13'}, {'name': 'Susan', 'points': '11', 'Played': '2'}, {'name': 'Peter', 'points': '4', 'Played': '3'}]

# 转换为以原姓名为键的字典
players_dict = {player['name']: player for player in players}

版本2:支持大小写不敏感访问

如果需要像你例子里那样,players["john"]也能访问到"John"的条目,我们可以把姓名统一转成小写(或大写)作为键:

# 转换为以小写姓名为键的字典,支持大小写不敏感访问
players_dict = {player['name'].lower(): player for player in players}

步骤2:按需求访问和修改属性

现在就可以用你想要的语法来操作啦,注意几个细节:

  • 原字典里的字段是points,你写的score可能是笔误,如果是要新增score字段也完全没问题
  • 原Played字段是字符串类型,修改时需要先转成整数计算,再转回字符串(如果需要保持原类型)

示例操作:

# 示例1:修改John的points(或新增score字段)
newScore = 30
# 修改原points字段
players_dict["John"]["points"] = str(newScore)  # 保持字符串类型,或者直接存整数也可以
# 或者新增score字段
players_dict["John"]["score"] = newScore

# 示例2:给John的Played次数加1(大小写不敏感版本)
players_dict["john"]["Played"] = str(int(players_dict["john"]["Played"]) + 1)

额外提示:转回列表格式

如果之后你需要把修改后的内容变回原来的列表格式,只需要提取字典的values即可:

updated_players = list(players_dict.values())

这样操作既满足了你的语法需求,又保证了修改的便捷性,非常适合新手快速上手!

内容的提问来源于stack exchange,提问作者MdTp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:28:53