python中字典(Dictionary)用法实例详解

  • Post category:Python

Python中字典(Dictionary)用法实例详解

在Python编程中,字典是一种非常有用的数据类型。它们允许我们存储键/值对,并且能够快速地通过键查找对应的值。本文将详细介绍Python中字典的用法和示例。

创建字典

要创建一个字典,可以用花括号{}括起来定义键值对,每一个键值对用冒号分隔。例如,下面的代码创建了一个简单的字典:

my_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}

访问字典中的值

通常,我们可以通过键来访问字典中的值。例如:

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}
print(my_dict["apple"])   # 输出 "red"
print(my_dict["grape"])   # 输出 "purple"

但是,如果我们尝试使用不存在的键进行访问,则会抛出KeyError异常。因此,我们可以使用get()方法来避免这种情况:

print(my_dict.get("apple"))   # 输出 "red"
print(my_dict.get("orange"))  # 输出 "None"

遍历字典

通过for循环,我们可以遍历字典中的所有键值对。例如:

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}
for key in my_dict:
    print(key + ":" + my_dict[key])

这将依次输出每一个键值对,例如:

apple:red
banana:yellow
grape:purple

修改字典

可以使用键来修改字典中的值。例如:

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}
my_dict["apple"] = "green"
print(my_dict)   # 输出 {"apple": "green", "banana": "yellow", "grape": "purple"}

添加键值对

添加键值对也非常简单,可以使用下面的方式:

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}
my_dict["orange"] = "orange"
print(my_dict)   # 输出 {"apple": "red", "banana": "yellow", "grape": "purple", "orange": "orange"}

删除键值对

删除一个键值对,可以使用del语句。例如:

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple", "orange": "orange"}
del my_dict["orange"]
print(my_dict)   # 输出 {"apple": "red", "banana": "yellow", "grape": "purple"}

示例1:计算列表中每个元素出现的次数

我们可以使用字典来计算列表中每个元素出现的次数。例如,下面的列表:

my_list = ["cat", "dog", "cat", "bird", "dog", "cat"]

出现了3个猫、2个狗和1个鸟。可以使用以下代码来计算:

my_list = ["cat", "dog", "cat", "bird", "dog", "cat"]
my_counts = {}
for item in my_list:
    if item in my_counts:
        my_counts[item] += 1
    else:
        my_counts[item] = 1
print(my_counts)   # 输出 {"cat": 3, "dog": 2, "bird": 1}

示例2:使用字典来缓存计算结果

有时候我们需要缓存某些函数的计算结果,以便在下一次使用相同的输入时,可以直接返回已经计算出的结果,避免重复计算。这时候,就可以使用字典来缓存结果。例如:

def expensive_compute(n):
    print("computing %d" %n)
    return n*n

my_cache = {}
def cached_compute(n):
    if n in my_cache:
        return my_cache[n]
    else:
        result = expensive_compute(n)
        my_cache[n] = result
        return result

print(cached_compute(5))   # 输出 computing 5 以及 25
print(cached_compute(5))   # 直接输出 25,不再重新计算

这里,我们定义了一个expensive_compute函数,它会计算一个数的平方,但是由于计算较为耗时,我们希望每个数只需要计算一次。那么我们就可以使用字典来缓存已经计算完成的结果。在cached_compute函数中,如果n已经存在于my_cache中,则直接返回结果,否则调用expensive_compute计算结果,并将n和结果存入my_cache中。