Python中如何检查当前字典项的键名是否匹配指定字符串?
问题描述
我正在遍历两个列表rows和columns来创建字典fields,最终的字典结构如下:
fields = { "A0": " ", "A1": " ", "A2": " ", ... "A7": " ", "B0": " ", "B1": " ", ... ... "H6": " ", "H7": " " }
在创建每个字典项后,我想要检查当前项的键是否匹配某个变量(例如apple="A1")。如果匹配,将键"A1"对应的值修改为"O"。
我尝试了以下代码,其中current_field_key是我尚未找到正确表达式的占位符:
apple = "A1" rows = ["A", "B", "C", "D", "E", "F", "G", "H"] columns = ["0", "1", "2", "3", "4", "5", "6", "7"] fields = {} for r in rows: for c in columns: fields[r+c] = " " if current_field_key == apple: fields["A1"] = "O"
我还考虑过通过创建所有键名的列表并检查索引来访问当前项的键名,但不知道如何找到正确的索引而不使代码过于复杂:
if list(fields.keys())[index] == apple: fields["A1"] = "O"
解决方案
方法一:循环内直接生成当前键并判断
你不需要占位符或索引操作,直接在循环中把当前生成的键存为变量,同步完成赋值和判断:
apple = "A1" rows = ["A", "B", "C", "D", "E", "F", "G", "H"] columns = ["0", "1", "2", "3", "4", "5", "6", "7"] fields = {} for r in rows: for c in columns: current_key = r + c # 根据是否匹配apple设置对应值 fields[current_key] = "O" if current_key == apple else " "
方法二:先初始化全空格字典,再单独修改目标键
如果想先完成所有键的初始化,再修改指定键,这种方式更高效,无需循环内重复判断:
apple = "A1" rows = ["A", "B", "C", "D", "E", "F", "G", "H"] columns = ["0", "1", "2", "3", "4", "5", "6", "7"] fields = {} for r in rows: for c in columns: fields[r + c] = " " # 直接修改目标键的值 fields[apple] = "O"
方法三:用字典推导式简化代码
追求代码紧凑的话,可以用字典推导式一行生成目标字典:
apple = "A1" rows = ["A", "B", "C", "D", "E", "F", "G", "H"] columns = ["0", "1", "2", "3", "4", "5", "6", "7"] fields = {r + c: "O" if r + c == apple else " " for r in rows for c in columns}
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

