所以我有两本字典:

dic1 = {1.0: 9.0, 3.0: 33.0, 5.0: 13.0}
dic2 = {1.0: 3.4, 3.0: 88.9, 4.0: 73.0, 5.0: 9.0}

每个键都是ID号,dic1中的值是rating,dic2中的值是cost。
我想要的是一种将每个ID号与其成本和等级关联起来的方法,在这个过程中删除任何在dic1中不匹配的键dic2。
dic3 = {1.0: (9.0, 4.2), 3.0: (33.0, 88.9), 5.0: (13.0, 9.0)}

然后我希望能够创建一个列ID,cost,rating的数组。
我一直想不出办法来做这件事。有什么建议吗?
谢谢!

最佳答案

试试这个,它可以在旧版本的Python上工作(早于2.7):

dic3 = {}
for k in dic1.viewkeys() & dic2.viewkeys():
    dic3[k] = (dic1[k], dic2[k])

或者,这是一种使用字典理解的方法,可以在最新版本的Python(>=2.7但
dic3 = { k : (dic1[k], dic2[k]) for k in dic1.viewkeys() & dic2.viewkeys() }

在Python3.0和up中,键已经被视为集合,产生了最好的解决方案:
dic3 = { k : (dic1[k], dic2[k]) for k in dic1.keys() & dic2.keys() }

不管怎样,确定两个词典共有的键的诀窍是使它们的集合相交,并且它按预期工作:
dic3
=> {1.0: (9.0, 3.4), 3.0: (33.0, 88.9), 5.0: (13.0, 9.0)}

关于python - 匹配两个字典中的键,并使用匹配的键和两个关联的值制作新词典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17199614/

10-12 13:48