Python 字典:如何根据键更新字典值 - 使用单独的字典键
Python Dictionary: How to update dictionary value, base on key - using separate dictionary keys
我有两本不等长的词典,例如:
people = {"john" : "carpenter", "jill": "locksmith", "bob":"carpenter", "jane": "pilot", "dan": "locksmith"}
jobcode = {"carpenter": 1, "locksmith": 2, "pilot": 3}
我想要做的是用 jobcode
值替换 people
中的值。
所以你最终会得到:
n
people = {"john": 1, "jill": 2, "bob": 1, "jane": 3, "dan":2}
我很乐意制作另一个新的 dict
来封装这些新数据,但到目前为止我认为最接近的是 ...我认为.. .
如有任何帮助,我们将不胜感激。
你可以通过听写理解轻松实现这一点
{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()}
更新
请注意,@Graipher,如果 jobcode
dict 缺少 key-value 对,您可以保持项目不变:
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)
我有两本不等长的词典,例如:
people = {"john" : "carpenter", "jill": "locksmith", "bob":"carpenter", "jane": "pilot", "dan": "locksmith"}
jobcode = {"carpenter": 1, "locksmith": 2, "pilot": 3}
我想要做的是用 jobcode
值替换 people
中的值。
所以你最终会得到:
n
people = {"john": 1, "jill": 2, "bob": 1, "jane": 3, "dan":2}
我很乐意制作另一个新的 dict
来封装这些新数据,但到目前为止我认为最接近的是
如有任何帮助,我们将不胜感激。
你可以通过听写理解轻松实现这一点
{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()}
更新
请注意,@Graipher,如果 jobcode
dict 缺少 key-value 对,您可以保持项目不变:
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)