如何修改字典值并基于工位动态为字典元素添加指定后缀?
如何动态修改字典中的值以扩展员工工位信息
你想要给特定工位的员工信息加上-A后缀来区分门店,同时不想硬编码固定值,对吧?你的现有代码只是直接把原字典内容复制后输出,没有做任何修改操作,所以达不到期望效果。我来给你调整代码,同时保留灵活扩展的空间:
解决方案代码
a_dict = {'A': [['LA', 'Sallys', 'Associate '], ['Hollywood', 'Tonys', 'Shelf'], ['Compton', 'Sally', 'Shelves']], 'B': [['SAC', 'Sallys', 'Associate '], ['Townsland', 'Tonys', 'Shelf'], ['Compton', 'Tiffanys', 'Shelves']]} # 定义目标工位和后缀,后续修改只需改这里,不用动遍历逻辑 target_station = "Shelves" suffix = "-A" # 遍历字典中的每一组员工数据 for key, employee_list in a_dict.items(): # 逐个处理每个员工的工位信息 for employee in employee_list: # 先去除工位字符串的前后空格,避免原数据的空格导致匹配失败 if employee[2].strip() == target_station: employee[2] = f"{employee[2].strip()}{suffix}" # 输出处理后的分组数据 print(employee_list)
代码解释
- 我把需要匹配的工位和要添加的后缀单独定义成变量,这样以后如果要修改目标工位(比如改成
Shelf)或者后缀(比如改成-B),直接改这两个变量就行,完全不用碰遍历逻辑,避免了硬编码的问题。 - 使用
a_dict.items()可以同时拿到字典的键和对应的员工列表,比你原来单独遍历键再取值的方式更清晰高效。 - 处理工位时用
strip()是因为原数据里有带空格的工位(比如'Associate '),这样可以避免因为空格导致匹配不上的问题。 - 运行这段代码后,你会得到完全符合期望的输出:
[['LA', 'Sallys', 'Associate '], ['Hollywood', 'Tonys', 'Shelf'], ['Compton', 'Sally', 'Shelves-A']] [['SAC', 'Sallys', 'Associate '], ['Townsland', 'Tonys', 'Shelf'], ['Compton', 'Tiffanys', 'Shelves-A']]
进阶:保留原字典数据的版本
如果你不想修改原有的a_dict,而是要把处理后的数据存到b_dict里,可以用这个版本:
a_dict = {'A': [['LA', 'Sallys', 'Associate '], ['Hollywood', 'Tonys', 'Shelf'], ['Compton', 'Sally', 'Shelves']], 'B': [['SAC', 'Sallys', 'Associate '], ['Townsland', 'Tonys', 'Shelf'], ['Compton', 'Tiffanys', 'Shelves']]} b_dict = {} target_station = "Shelves" suffix = "-A" for key, employee_list in a_dict.items(): processed_list = [] for emp in employee_list: # 复制原员工信息列表,避免修改原字典的数据 emp_copy = emp.copy() if emp_copy[2].strip() == target_station: emp_copy[2] = f"{emp_copy[2].strip()}{suffix}" processed_list.append(emp_copy) b_dict[key] = processed_list # 输出b_dict中的处理后数据 for group in b_dict.values(): print(group)
这个版本会把处理后的结果存在b_dict里,原a_dict的数据完全不受影响,适合需要保留原始数据的场景。
内容的提问来源于stack exchange,提问作者TheSLYnSmoothOne
相关产品推荐
相关产品推荐

