doo*_*ood 0 python dictionary replace updates python-3.x
我有两个长度不等的词典,例如:
people = {"john" : "carpenter", "jill": "locksmith", "bob":"carpenter", "jane": "pilot", "dan": "locksmith"}
jobcode = {"carpenter": 1, "locksmith": 2, "pilot": 3}
Run Code Online (Sandbox Code Playgroud)
就是我想要做的是替换值people
与jobcode
值.所以你最终得到:n
people = {"john": 1, "jill": 2, "bob": 1, "jane": 3, "dan":2}
Run Code Online (Sandbox Code Playgroud)
我很乐意再作新的dict
封装这个新的数据很好,但到目前为止,我想我已经最接近的是这个 ...我想...
任何帮助将不胜感激.
vis*_*ell 10
你可以通过词典理解轻松实现这一目标
{k: jobcode[v] for k, v in people.items()}
Run Code Online (Sandbox Code Playgroud)
但是你应该小心,因为它可以提高KeyError
.
另一种方式默认jobcode
使用dict
.get()
方法:
default_jobcode = 1000
final_dict = {k: jobcode.get(v, default_jobcode) for k, v in people.items()}
Run Code Online (Sandbox Code Playgroud)
UPDATE
正如@Graipher所指出的那样,如果jobcode
dict缺少键值对,你可以保持item不变:
final_dict = {k: jobcode.get(v, v) for k, v in people.items()}
Run Code Online (Sandbox Code Playgroud)
这可能是更好的默认解决方案jobcode
.
归档时间: |
|
查看次数: |
4428 次 |
最近记录: |