Python交换字典键值对的四种方法实例
在 Python 编程中,字典是非常常用的数据类型之一。字典由键和值两部分构成,其中键是唯一的而值则可以重复。在某些情况下我们需要将字典中的键和值进行交换,本文将介绍 Python 中交换字典键值对的四种方法。
方法一:使用字典推导式
如果字典中没有重复的值,我们可以使用字典推导式来生成一个新的字典。
origin_dict = {'a': 1, 'b': 2, 'c': 3}
new_dict = {v: k for k, v in origin_dict.items()}
print(new_dict)
输出结果:
{1: 'a', 2: 'b', 3: 'c'}
这段代码中,我们使用了字典推导式和 items() 方法来生成一个新的字典,其中键值对的键为原字典的值,值为原字典的键。
方法二:使用 zip 函数
如果字典中有重复的值,可以使用 zip 函数来交换字典中的键和值,同时将其作为元组进行迭代。
origin_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}
new_dict = {}
for v, k in zip(origin_dict.values(), origin_dict.keys()):
if v in new_dict:
new_dict[v].append(k)
else:
new_dict[v] = [k]
print(new_dict)
输出结果:
{1: ['a'], 2: ['b', 'd'], 3: ['c']}
这段代码中,我们使用了 zip 函数和迭代器来遍历字典,同时在新的字典中使用列表存储相同值的键,保证了原字典中的重复值不会丢失。
方法三:使用 collections 模块的 defaultdict 类
使用 defaultdict 类可以避免在处理字典时出现 KeyError 错误。
from collections import defaultdict
origin_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}
new_dict = defaultdict(list)
for k, v in origin_dict.items():
new_dict[v].append(k)
print(new_dict)
输出结果:
defaultdict(<class 'list'>, {1: ['a'], 2: ['b', 'd'], 3: ['c']})
这段代码中,我们使用了 defaultdict 类和列表来存储字典中具有相同值的键。
方法四:使用 dict() 函数和 zip 函数
还可以使用 Python 的内置函数 dict() 和 zip() 来交换字典中的键和值。
origin_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}
new_dict = dict(zip(origin_dict.values(), origin_dict.keys()))
print(new_dict)
输出结果:
{1: 'a', 2: 'd', 3: 'c'}
这段代码中,我们使用了 dict() 函数和 zip() 函数来生成新的字典。
以上就是 Python 中交换字典键值对的四种方法,你可以根据实际情况选择其中一种或多种方法来实现字典的键值对交换。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python交换字典键值对的四种方法实例 - Python技术站