本篇介绍Python中字典的复制与遍历。文中会讨论字典的浅复制与深复制的区别,字典的遍历方法和方式。通过本篇的学习,可以了解字典浅复制与深复制的区别,掌握字典遍历的方法和方式。

1、字典的复制

Python字典提供了内置函数copy方法,实现对字典的复制操作。字典复制分为浅复制和深复制两种方式。浅复制只是把当前字典内的子对象的引用复制给新字典,当被复制字典的子对象内容改变时,新字典的子对象内容也会改变;深复制把当前字典的全部内容,也包括子对象的内容都完全复制给新字典,被复制字典和新字典是两个独立的数据对象,被复制字典内容的改变不会影响新字典的内容。浅复制用copy方法,深复制用deepcopy方法。

例1:字典的复制例子

python字符串复制 python怎么复制字典_for循环

例1输出结果如下图所示。

python字符串复制 python怎么复制字典_for循环_02

在案例代码中,adict字典有‘姓名’和‘性别’两个key,分别对应值‘Tom’和值‘['男','女']’,值‘['男','女']’是一个列表对象。然后将adict字典分别浅复制和深复制给bdict字典和cdict字典。随后又对adict字典的元素进行删除操作,最后分别遍历输出bdict字典和cdict字典。从输出结果可以看出,深复制的cdict字典内容没有改变,浅复制的bdict字典内容和adict字典的内容一致,说明adict字典内容的改变影响到了bdict字典内容,而cdict字典内容不受任何影响。

2、字典的遍历

遍历字典主要是遍历字典的项、键和值。遍历字典的项是把字典包含的所有项都列举出来,遍历字典的键和值是把字典所有的键和值都列举出来。字典提供的items方法可获取字典所有项的集合,在for循环语句中使用items方法可以遍历字典包含的所有项。

例2:遍历字典的项

python字符串复制 python怎么复制字典_python字典遍历输出_03

例2输出结果如下图所示。

python字符串复制 python怎么复制字典_for循环_04

当程序需要遍历字典的键或值时,可以参考下面的例子代码。

例3:遍历字典的键或值

python字符串复制 python怎么复制字典_for循环_05

例3输出结果如下图所示。

python字符串复制 python怎么复制字典_python字典遍历输出_06

下面给出了同时遍历字典键和值的例子代码。

例4:同时遍历字典的键和值

python字符串复制 python怎么复制字典_for循环_07

例4输出结果如下图所示。

python字符串复制 python怎么复制字典_for循环_08

课程小结

(1)复制一个字典对象可以使用copy函数,该函数创建一个新的字典,并将原字典的内容复制给新字典。复制方式分为浅复制和深复制两种方式。浅复制只是把字典中的子对象(如字典中的列表、元组等)的引用复制给新字典,也就是说被复制字典的子对象和新字典的子对象使用同一个内存区域,当被复制字典的子对象内容改变时,新字典的子对象内容也会同时改变。深复制是相对于浅复制来说的,在复制过程中,Python会把原字典完整的内容(包括子对象)复制到新字典中,当被复制字典内容改变时,不会影响到新字典的内容。浅复制可以节省内存空间,如果把被复制字典和新字典当做同一个字典来使用时,推荐使用浅复制。

(2)在for循环语句中使用字典提供的items方法,可以遍历字典中的每个数据项。也可以使用for循环语句中迭代访问字典所有的键或值。