python - 如果一个字典的键等于另一个字典的值,合并两个字典的最快方法是什么?

标签 python dictionary

假设我有两本字典

dict1 = {(1,1,1) : ('abc'), (2,2,2) : ('def')} 
dict2 = {('abc') : (1,2,3), ('def') : (4,5,6)}

生成 dict 3 的最快方法是什么

dict3 = {(1,1,1):(1,2,3), (2,2,2):(4,5,6)}?

最佳答案

您可以使用字典理解:

dict1 = {(1,1,1) : ('abc'), (2,2,2) : ('def')} 
dict2 = {('abc') : (1,2,3), ('def') : (4,5,6)}
dict3 = {k: dict2[dict1[k]] for k in dict1}

>>> print dict3
{(2, 2, 2): (4, 5, 6), (1, 1, 1): (1, 2, 3)}

这会迭代 dict1,并使用 dict1 中相应的作为键,在 dict2 中查找值。然后将 dict1 中的键和 dict2 中的值组合起来生成一个新字典。

请注意,在 Python 2 中,这应该比使用 dict1.items() 稍快一些,因为这将构建一个临时列表。类似地,迭代 dict1.iteritems() 会返回一个必须创建的迭代器,但这可以忽略不计。直接迭代字典的键也会产生最小的开销。

关于python - 如果一个字典的键等于另一个字典的值,合并两个字典的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069059/

相关文章:

dictionary - 如何深拷贝 map 然后清除原件?

python - 使用 SQLite 作为键 :value store

C# 将单个字典的值组合到单个扩展列表中

python - 并行化python for循环

python - 获取 Django REST 中金额字段结果的总和

python - 在脚本当前目录中从 Python 运行子进程 bash 脚本

Javascript 语法字典(标准函数、对象、方法和关键字)

python - 如何使用OpenCV消除此图像中的噪点?

python - 如何在不重复代码的情况下定义 randint 的元组?

python - 从数据帧的两列中提取值以创建键和值的字典