gpt4 book ai didi

python - 在python中合并两个字典

转载 作者:行者123 更新时间:2023-11-28 19:54:54 26 4
gpt4 key购买 nike

你好我有两个字典如下

{'abc':1,'xyz':8,'pqr':9,'ddd': 22}
{0:'pqr',1:'xyz',2:'abc',3:'ddd'}

我的目标是获得以下格式的新词典

{2:1 1:8 0:9 3:22}

我将第一个字典的值作为新字典的值,并将与字典 1 的键匹配的字典 2 的键作为新字典的键。

我写了一些代码如下:

for list1elem in listofemail[1:]:
print(list1elem)
for the_key, the_value in list1elem.items():
the_key = [k for k, v in vocab_dic.items() if v == the_key]

但我的代码没有用新 key 替换旧 key 。我的两个词典都很大,包含 25000 个键/值对。所以这需要很多时间。最快的方法是什么?

最佳答案

这个

d1 = {'abc':1, 'xyz':8, 'pqr':9, 'ddd':22}
d2 = {0:'pqr', 1:'xyz', 2:'abc', 3:'ddd'}

d = {k:d1[v] for k,v in d2.items()}

产生

{0: 9, 1: 8, 2: 1, 3: 22}

基本上,它遍历 d2 中的每个项目(键和值),并使用值 v 作为 d1 中的键来得到它对应的值。然后它将后者与原始键 k 组合以创建进入结果字典的项目。

旁注:没有错误检查。它假定 d2 中的值作为键存在于 d1 中。

如果在缺少键的情况下你想要一个特定的值(例如 -1),你可以这样做

d = {k:d1.get(v, -1) for k,v in d2.items()}

否则,如果您想完全省略插入项目,请使用

d = {k:d1[v] for k,v in d2.items() if v in d1}

关于python - 在python中合并两个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com