Python中字典的其它操作(第11节)


字典和列表一样也有许多方法,在Python开发中,字典有着举足轻重的地位,掌握字典的操作方法相当重要。

1、clear()清空字典所有元素

clear()函数用于移除字典中的所有元素,使其成为一个空字典。比如,我们在开发一个日志分析应用时,查看完之前的日志后想要清空缓存的日志数据,以便开始处理下一天的日志,可以使用clear()函数删除字典中的所有的元素,将字典清空。例如:

动手练一练:

# 清空字典
a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
print(a)  # 输出 {'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}

print("-------使用clear()将字典清空-------")

a.clear()
print(a)  # 输出 {}

执行以上代码,输出结果为:

{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}
-------使用clear()将字典清空-------
{}

2、copy()复制一份字典

复制字典和复制列表一样,如果只是简单通过赋值方法复制的话,则只是引用之前的内容,如果对复制后的字典做修改的话,也会改变原先的字典内容。copy()方法则不一样,相当于完整地复制了一份新的副本。字典的新副本是独立于原始字典的,也就是说,对原始字典的修改不会影响新的副本。例如:

动手练一练:

a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
c = a
b = a.copy()
print(a)
print(c)
print(b)

print("-------这是虚线-------")

c["Orange"] = "橙子"
print(a)
print(c)
print(b)

执行以上代码,输出结果为:

{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}
{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}
{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}
-------这是虚线-------
{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃', 'Orange': '橙子'}
{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃', 'Orange': '橙子'}
{'Apple': '苹果', 'Banana': '香蕉', 'Cherry': '樱桃'}

上面的例子中,我们首先定义了一个字典为a,后来使用copy()函数的操作,将这个字典中的值全部赋值给了一个新的字典b,最后再将字典输出,并且字典b不会随着字典a的修改而发生改变。

3、fromkeys()创建一个新字典

dict.fromkeys()方法是Python字典(dict)提供的一个工具方法,其作用是根据指定的键(key)创建一个新的字典,例如:

动手练一练:

seq = ("年龄", "身高", "体重")
a = dict.fromkeys(seq)
print("没有指定默认值:", a)
b = dict.fromkeys(seq, 18)
print("指定默认值:", b)

执行以上代码,输出结果为:

没有指定默认值: {'年龄': None, '身高': None, '体重': None}
指定默认值: {'年龄': 18, '身高': 18, '体重': 18}

上面的例子中,Python字典“dict.fromkeys(第一个参数,第二个参数)”函数用于创建一个新字典,第一个参数以序列seq中的元素做字典的键,第二个参数为字典所有键对应的初始值。

4、get()返回键对应的值

get()函数是Python中一个重要的方法,它可以用来获取字典中键对应的值,并返回该键对应的值,如果键不存在于字典中,则返回None,例如:

动手练一练:

a = {
    "姓名": "张三",
    "年龄": 18,
    "体重": 40,
    "爱好": "吃",
    "缺点": None, # 注意:None是一个特殊的常量,它表示“空值”或“不存在”
}
print(a.get("姓名")) # 输出 张三
print(a.get("缺点")) # 输出 None
print(a.get("优点")) # 键“优点”不存在时,默认值返回None
print(a.get("优点", "暂无信息")) # 键“优点”不存在时,默认值返回“暂无信息”

执行以上代码,输出结果为:

张三
None
None
暂无信息

上面的例子中,get(第一个参数,第二个参数)方法有两个参数,第一个必填参数为指定要搜索的键,第二个参数用于返回指定键的值,如果键不存在,就返回指定第二个参数的内容。如果没有填写第二个参数,当键不存在时返回默认值None。

5、keys()返回字典里的所有键

keys()可以将字典中的键以列表的形式返回,例如:

动手练一练:

a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
print(a.keys())

执行以上代码,输出结果为:

dict_keys(['Apple', 'Banana', 'Cherry'])

上面的例子中,使用keys()方法可以方便地获取字典中的键,进而对键进行遍历、查找、筛选等操作,keys()经常与“in”操作符组合使用,例如:

动手练一练:

a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
print(a.keys()) # 输出 dict_keys(['Apple', 'Banana', 'Cherry'])
print("是否存在Apple?", "Apple" in a.keys()) # 输出 True(真)
print("是否存在Python?", "Python" in a.keys()) # 输出 False(假)

执行以上代码,输出结果为:

dict_keys(['Apple', 'Banana', 'Cherry'])
是否存在Apple True
是否存在Python False

6、values()返回字典里的所有值

values()可将字典中的值以列表的形式返回,和keys()方法一样,经常与“in”操作符组合使用,例如:

动手练一练:

a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
print(a.values()) # 输出 dict_values(['苹果', '香蕉', '樱桃'])
print("是否存在苹果?", "苹果" in a.values()) # 输出 True(真)
print("是否存在葡萄?", "葡萄" in a.values()) # 输出 False(假)

执行以上代码,输出结果为:

dict_values(['苹果', '香蕉', '樱桃'])
是否存在苹果 True
是否存在葡萄 False

7、items()返回字典里的所有键和值

items()方法用于返回一个包含所有键值对(即字典中的每个键及其对应的值)的元组列表。items()方法返回的元组列表中,每个元组中的第一个元素表示字典中的一个键,第二个元素表示该键对应的值。这是一个非常重要的方法,因为它允许我们遍历字典中的所有键值对。例如:

动手练一练:

a = {
    "Apple":"苹果",
    "Banana":"香蕉",
    "Cherry":"樱桃",
}
b = a.items()
print(b)  # 输出 dict_items([('Apple', '苹果'), ('Banana', '香蕉'), ('Cherry', '樱桃')])

print("-------这是虚线-------")

for k, v in b:
  print(k,"=>",v)

# 输出 Apple => 苹果
# 输出 Banana => 香蕉
# 输出 Cherry => 樱桃

执行以上代码,输出结果为:

dict_items([('Apple', '苹果'), ('Banana', '香蕉'), ('Cherry', '樱桃')])
-------这是虚线-------
Apple => 苹果
Banana => 香蕉
Cherry => 樱桃

上面的例子中,我们通过调用items()方法获得字典中的所有键值对,并返回一个元组列表,再通过for循环遍历该元组列表。在后面的教程中我们将会详细讲解for循环遍历。

items()方法是Python字典中非常重要的一个方法,在遍历、修改、删除、查找字典元素时都经常会使用到。熟练掌握items()方法的使用技巧,可以大大提高Python编程的效率,让程序员更加快速地实现各种复杂的编程任务。