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
相关产品推荐
相关产品推荐

