用另一个字典中相应的键值映射替换字典的值列表
Replace dictionary's value list with corresponding key-value mapping from another dict
我有这两个词典:
Dict_Employee_ID = {'0': ['0', '1', '2'], '1': ['0', '1', '2']}
Dict_ID_Shift = {'0': ['L', 'D'], '1': ['D', 'E', 'D'], '2': ['None', 'Any', 'Any']}
我的目标是当Dict_ID_Shift
的键对应Dict_Employee_ID
的值时,用字典Dict_ID_Shift
的值替换字典Dict_Employee_ID
的值
预期输出应如下所示:
{
'0': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']],
'1': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']]
}
我试过使用 intersection() 方法,但没有得到预期的结果,你的策略是什么?谢谢
您没有提到您希望 Dict_Employee_ID 中的键的值等于在 Dict_ID_Shift 中找不到时的值,所以我假设您希望它保留它的旧值。下面的代码应该会给你你正在寻找的结果:
Dict_ID_Shift_Values = list(Dict_ID_Shift.values())
for key in Dict_Employee_ID:
if key in Dict_ID_Shift:
Dict_Employee_ID[key] = Dict_ID_Shift_Values
您可以使用 字典理解 并将值重新分配给 Dict_Employee_ID
为:
Dict_Employee_ID = {'0': ['0', '1', '2'], '1': ['0', '1', '2']}
Dict_ID_Shift = {'0': ['L', 'D'], '1': ['D', 'E', 'D'], '2': ['None', 'Any', 'Any']}
Dict_Employee_ID = {k: [Dict_ID_Shift[e] for e in v] for k, v in Dict_Employee_ID.items()}
其中 Dict_Employee_ID
将保存值:
{
'0': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']],
'1': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']]
}
如果你想替换现有的字典,那么你也可以编写显式 for
循环来实现:
for k, v in Dict_Employee_ID.items():
Dict_Employee_ID[k] = [Dict_ID_Shift[e] for e in v]
遍历字典中的值,并相应地遍历每个值,使用 dict.get
检查成员资格:
for sub_list in dict_employee_id.values():
for i, val in enumerate(sub_list):
# Second argument will keep the value the same if it isn't
# in the dictionary
sub_list[i] = dict_id_shift.get(val, val)
我有这两个词典:
Dict_Employee_ID = {'0': ['0', '1', '2'], '1': ['0', '1', '2']}
Dict_ID_Shift = {'0': ['L', 'D'], '1': ['D', 'E', 'D'], '2': ['None', 'Any', 'Any']}
我的目标是当Dict_ID_Shift
的键对应Dict_Employee_ID
的值时,用字典Dict_ID_Shift
的值替换字典Dict_Employee_ID
的值
预期输出应如下所示:
{
'0': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']],
'1': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']]
}
我试过使用 intersection() 方法,但没有得到预期的结果,你的策略是什么?谢谢
您没有提到您希望 Dict_Employee_ID 中的键的值等于在 Dict_ID_Shift 中找不到时的值,所以我假设您希望它保留它的旧值。下面的代码应该会给你你正在寻找的结果:
Dict_ID_Shift_Values = list(Dict_ID_Shift.values())
for key in Dict_Employee_ID:
if key in Dict_ID_Shift:
Dict_Employee_ID[key] = Dict_ID_Shift_Values
您可以使用 字典理解 并将值重新分配给 Dict_Employee_ID
为:
Dict_Employee_ID = {'0': ['0', '1', '2'], '1': ['0', '1', '2']}
Dict_ID_Shift = {'0': ['L', 'D'], '1': ['D', 'E', 'D'], '2': ['None', 'Any', 'Any']}
Dict_Employee_ID = {k: [Dict_ID_Shift[e] for e in v] for k, v in Dict_Employee_ID.items()}
其中 Dict_Employee_ID
将保存值:
{
'0': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']],
'1': [['L', 'D'], ['D', 'E', 'D'], ['None', 'Any', 'Any']]
}
如果你想替换现有的字典,那么你也可以编写显式 for
循环来实现:
for k, v in Dict_Employee_ID.items():
Dict_Employee_ID[k] = [Dict_ID_Shift[e] for e in v]
遍历字典中的值,并相应地遍历每个值,使用 dict.get
检查成员资格:
for sub_list in dict_employee_id.values():
for i, val in enumerate(sub_list):
# Second argument will keep the value the same if it isn't
# in the dictionary
sub_list[i] = dict_id_shift.get(val, val)