python字典setdefault方法和get方法使用实例

  • Post category:Python

标题: Python字典setdefault方法和get方法使用实例

简介

字典是Python中重要的内置类型之一,它能够存储键值对,使用键访问值。Python字典有一些非常有用的方法,例如setdefault方法和get方法,本文将详细讲解这两个方法的使用实例。

Python字典setdefault方法

setdefault()方法在字典中查找键key, 如果键不存在,则在字典中添加这个键,并将值设置为默认值是value,并返回该值,如果键存在,则返回该键对应的值。

语法:

字典.setdefault(key, default=None)

实例一:

我们假设有一个字典g,存储了学生名称和他们所选的课程,如果课程不存在,则将学生的默认课程设置为“高等数学”。

g = {'小明': '英语', '小张': '计算机科学'}

# 添加键值对
g.setdefault('小红', '高等数学')
g.setdefault('小明', '计算机科学')

print(g['小红'])
print(g['小明'])
print(g)

输出结果:

'高等数学'
'英语'
{'小明': '英语', '小张': '计算机科学', '小红': '高等数学'}

解释:

在上面的例子中,我们首先创建了一个字典g,其中包含了两个键-值对,即小明的英语课和小张的计算机科学课程。

接着,我们使用setdefault()方法来添加新的键-值对,如果键不存在,则添加该键及对应的value,如果键已经存在,则返回该键对应的值。 在这个例子中,我们为小红设置了默认课程“高等数学”,因为该学生在字典中不存在,我们还可以看到,由于已经存在键“小明”,setdefault()不会修改原有的值。

实例二:

接下来是一个更实际的例子,在这个例子中,我们将按照学生成绩将名字分配到不同的组。如果学生的分数低于60,将分配到“不及格”组,如果高于等于60但不超过80,将分配到“及格”组,如果高于等于80,则分配到“优秀”组。

students = {'小明': 78, '小张': 40, '小红': 88, '小李': 56}
groups = {}

for s, score in students.items():
    if score < 60:
        group = groups.setdefault('不及格', [])
    elif score < 80:
        group = groups.setdefault('及格', [])
    else:
        group = groups.setdefault('优秀', [])

    group.append(s)

print(groups)

输出结果:

{'及格': ['小明', '小李'], '不及格': ['小张'], '优秀': ['小红']}

解释:

在这个例子中,我们有一个字典students,其中包含了每个学生的成绩。

然后我们创建一个空字典groups,将名字按照成绩分配到不同的组中,我们使用setdefault()方法将每个名字添加到相应的组中。如果组不存在,则创建一个新的列表作为该组的值,setdefault()方法返回该列表。无论该组是否存在,我们都将该名字添加到该组中。 随后,我们可以看到,所有人都被分配到了相应的组中。

Python字典get方法

dict.get(key, default=None) 方法返回指定键的值,如果键不在字典中,则返回默认值。

语法

字典.get(key, default=None)

如果key存在,则返回对应的值;如果key不存在,则返回default值,如果default不指定或为None,则返回None。

实例三:

让我们来回顾一下实例二中的成绩分组问题,并使用get()方法来实现。

students = {'小明': 78, '小张': 40, '小红': 88, '小李': 56}
groups = {'优秀': [], '及格': [], '不及格': []}

for s, score in students.items():
    group = groups.get('优秀') if score >= 80 else (groups.get('及格') if score >= 60 else groups.get('不及格'))
    group.append(s)
print(groups)

输出结果:

{'及格': ['小明', '小李'], '不及格': ['小张'], '优秀': ['小红']}

解释:

在这个例子中,我们创建了一个groups字典,指定每个分数范围的列表。然后我们使用get()方法来检查成绩并获取适当的列表,和实例二相比,我们没有使用setdefault()方法来创建新列表,这个实现方式显然更简单。

总结

Python字典有许多有用的方法,setdefault()和get()方法就是其中两个。setdefault()方法可以将默认值赋给字典中的不存在的键,而get()方法则可以返回不存在的键的默认值。这些方法对于具有特殊需求的Python开发人员来说非常有用。