最近在工作中碰到一种情况是,需要在字典里面指针的位置插入一个值,但是因为字典是无序的,所以如果说想直接在某个key后面插入值是比较难实现的,那么如何实现呢?
场景:
我们在做审批流的时候,有一个优先级的字段,根据优先级来确定审批流,

财务流程的审批流是:
发起人—> 直属leader —> 部门leader —> 财务 —> 财务负责人 —> 总经理
但是后面,财务经理提出要在部门leader和财务之间添加一个业务负责人来进行再次确认,如果说想在已经算好的字典里面直接加的话,会直接把这个节点放到最后面去,所以这个时候需要我们用一些技巧。
Step 1:在节点里面加入一个优先级为3300的节点,但是由于没有配置人员,会被自动过滤到。

生成的字典类似:
approver_dict = {‘1000': node(a), ‘2000’:node(b),’3000’:node(c),’3500’:node(d),’4000’: node(e)}
Step 2:
向生成的字典里面加入一个节点
Approver_dict[3300] = node(f)
Step3:
将新的字典按照key的顺序排列返回
- temp_list = sorted(approver_dict.keys(), key=lambda x: x[0].approver_priority)
-
- temp_dict = {}
-
- for temp in temp_list:
-
- temp_dict[temp] = approver_dict.get(temp)
-
- return temp_dict
最后返回的结果类似于:
{‘1000': node(a), ‘2000’:node(b),’3000’:node(c),’3300’:node(f),’3500’:node(d),’4000’: node(e)}