Python 使用非严格字典规则

  • Post category:Python

Python 使用非严格字典规则是指在字典定义中允许出现没有使用引号括起来的键名,这种方式称为非严格字典规则(Non-Strict Dict Rules),也被称为属性字典形式(Attribute Dict Form)。

使用非严格字典规则的方法是,在定义字典时,可以在键名不使用引号括起来的情况下,直接赋值,其中键名必须符合 Python 标识符的命名规则,不允许使用 Python 的保留字(像 if、else、class 等)。这样定义的字典可以使用点号或中括号来访问,就像访问对象属性或普通字典的键值一样,如下所示:

person = {'name': 'Alice', 'age': 18, 'gender': 'female', city: 'Beijing'}
print(person.name)    # 输出:Alice
print(person['age'])  # 输出:18
print(person.city)    # 输出:Beijing

在上面的代码中,person 是一个使用非严格字典规则定义的字典,其中键名 ‘name’、’age’、’gender’ 使用了引号括起来,而键名 city 没有使用引号括起来,直接赋值。通过使用点号或中括号访问键名,可以从该字典中获取对应的键值,如上面的输出结果所示。

除了直接访问键值,还可以使用内置函数 getattr() 从字典中获取对应的属性值。对于不存在的属性,可以传入一个默认值,如下所示:

name = getattr(person, 'name', 'Unknown')
hobby = getattr(person, 'hobby', 'Unknown')
print(name)     # 输出:Alice
print(hobby)    # 输出:Unknown

在上例中,getattr() 从 person 字典中获取 ‘name’ 属性的值,并将其赋值给变量 name,此时 person 中确实存在属性名为 ‘name’,因此 getattr() 调用成功,返回变量 name 的值为 ‘Alice’。接着在尝试使用 getattr() 获取 ‘hobby’ 属性的值,但是由于 person 字典中不存在 ‘hobby’ 属性,因此使用了默认值 ‘Unknown’,返回变量 hobby 的值为 ‘Unknown’。

这就是 Python 使用非严格字典规则的完整攻略,可以根据实际情况灵活运用。