创建Python字典时能否直接根据当前键设置对应值
Python不支持你示例中在字典字面量定义阶段直接引用当前键的写法,因为字典对象在字面量赋值完成前还未初始化完成,无法获取到当前正在赋值的键。你可以用以下方案实现同等需求:
方案1:字典推导式(首选)
预先整理好所有需要设置的键,直接通过字典推导式构建即可,代码简洁易读:
# 提前定义所有键 keys = ["a", "b", "c"] dictionary = {key: f"Key of this = {key}" for key in keys}
运行后输出结果和你预期完全一致:
>>> dictionary {'a': 'Key of this = a', 'b': 'Key of this = b', 'c': 'Key of this = c'}
方案2:配合自定义函数处理复杂逻辑
如果值的生成规则比较复杂,你可以把生成逻辑封装成单独函数再调用:
def build_value(key): # 可在此处添加更多自定义处理逻辑 return f"Key of this = {key}" dictionary = {key: build_value(key) for key in ["a", "b", "c"]}
方案3:自定义字典类(仅大量复用该规则时使用)
如果你需要频繁创建这种值和键关联的字典,可以继承原生dict类自定义规则:
class AutoBindKeyDict(dict): def __setitem__(self, key, val): # 约定值中用{key}作为当前键的占位符 super().__setitem__(key, val.format(key=key)) d = AutoBindKeyDict() d["a"] = "Key of this = {key}" d["b"] = "Key of this = {key}" d["c"] = "Key of this = {key}"
内容的提问来源于stack exchange,提问作者oakca
相关产品推荐
相关产品推荐

