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

Python中字典索引用变量与字符串的差异及代码疑问

Python字典索引:[word]和["word"]的区别

核心区别

  • ["word"] 是直接使用字符串字面量作为字典的键,明确指定要访问的键就是字符串 "word"。
  • [word] 是使用变量word的值作为键,Python会先读取变量word的内容,再用这个内容去字典中查找对应的键。

对应你的两段代码分析

第一段代码(teams字典)

你写的 team[rating] 会报错,是因为**rating这个变量根本没定义**——Python找不到名为rating的变量,自然无法用它的值去做字典索引。而 team["rating"] 直接用字符串字面量"rating"作为键,和CSV文件里的列名完全对应,所以能正确找到对应的字段值,完成类型转换。

修正后可运行的代码:

teams = []
# TODO: Read teams into memory from file
with open(sys.argv[1], "r") as file:
    reader = csv.DictReader(file)
    for team in reader:
         team["rating"] = int(team["rating"])
         teams.append(team)

第二段代码(DNA匹配)

person[subsequence] 能正常运行,是因为subsequence是已定义的循环变量:在for subsequence in subsequences循环中,每次迭代subsequence都会被赋值为subsequences列表里的一个字符串元素(比如某个DNA子序列的名称)。此时用subsequence作为索引,本质是用它存储的字符串去字典里找对应键,和直接写person["AGAT"](假设子序列是AGAT)效果完全一致。


总结

两种写法本质都是用字符串作为字典的键,选择哪种取决于键的来源:

  • 当键是固定的已知字符串时,用["固定键名"];
  • 当键是动态生成的(比如循环迭代、用户输入、其他变量传递),就用[变量名],但必须保证这个变量已经被正确定义,且存储的是字典中存在的键字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:10:50