Python Dictionary:如何使用单独的字典键更新字典值,基于键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Dictionary:如何使用单独的字典键更新字典值,基于键相关的知识,希望对你有一定的参考价值。

我有两个不等长的字典,例如:

people = {"john" : "carpenter", "jill": "locksmith", "bob":"carpenter", "jane": "pilot", "dan": "locksmith"}

jobcode = {"carpenter": 1, "locksmith": 2, "pilot": 3}

我想要做的是用people值替换jobcode中的值。所以你最终得到:n

people = {"john": 1, "jill": 2, "bob": 1, "jane": 3, "dan":2} 

我很乐意制作另一个新的dict,它也包含了这些新数据,但到目前为止,我认为我最接近的是this ......我想......

任何帮助将不胜感激。

答案

你可以通过词典理解轻松实现这一目标

{k: jobcode[v] for k, v in people.items()}

但是你应该小心,因为它可以提高KeyError

使用jobcode dict的默认.get() method的另一种方式:

default_jobcode = 1000
final_dict = {k: jobcode.get(v, default_jobcode) for k, v in people.items()}

UPDATE

正如@Graipher所指出的那样,如果jobcode dict缺少键值对,你可以保持物品不受影响:

final_dict = {k: jobcode.get(v, v) for k, v in people.items()}

这可能是更好的解决方案,有默认的jobcode

另一答案

这个: -

people = {'john' : 'carpenter', 'jill': 'locksmith', 'bob':'carpenter', 'jane': 'pilot', 'dan': 'locksmith'}
jobcode = {'carpenter': 1, 'locksmith': 2, 'pilot': 3}
for i,j in people.items():
    if j in jobcode.keys():
        people[i] = jobcode[j]
print(people)

以上是关于Python Dictionary:如何使用单独的字典键更新字典值,基于键的主要内容,如果未能解决你的问题,请参考以下文章

将List的String表示形式转换为Dictionary Python

Python weakref.WeakKeyDictionary与weakref.WeakValueDictionary区别和实战应用

使用Python Dictionary在Python中合并CSV文件

Python 字典(Dictionary) update()方法

在Python中,何时使用Dictionary,List或Set?

python---dictionary字典