Python:基于双列表的搜索替换与缓存映射实现求助
解决方案:基于双列表生成带计数的映射字典
这个需求完全可以实现,核心思路是通过两个缓存字典分别记录已处理的名称映射和各类型的当前计数,确保相同名称得到一致的映射值,同时按类型顺序生成编号。
实现代码(Python)
names = ["Mark","Steve","Mark","Chrome","192.168.0.1","Mark","Chrome","192.168.0.1","192.168.0.2"] type_list = ["user","user","user","process","address","user","process","adress","address"] # 存储最终的名称-映射值字典 name_map = {} # 记录每种类型已分配的编号 type_counter = {} for name, t in zip(names, type_list): if name not in name_map: # 若当前类型未计数过,默认从0开始,加1后得到当前编号 type_counter[t] = type_counter.get(t, 0) + 1 # 拼接类型和编号作为映射值 name_map[name] = f"{t}{type_counter[t]}" print(name_map)
代码说明
name_map:负责缓存每个名称对应的最终结果,避免重复计算,确保相同名称映射一致。type_counter:统计每种类型已生成的编号,比如首次遇到user类型的新名称时分配user1,第二次新user分配user2,以此类推。- 遍历过程中仅处理未缓存过的名称,已存在的直接跳过,保证效率和一致性。
输出结果
运行代码后会得到你期望的字典:
{ "Mark": "user1", "Steve": "user2", "Chrome": "process1", "192.168.0.1": "adress1", "192.168.0.2": "address2" }
注:代码会保留原type_list中的拼写差异(如adress和address),与你的期望输出完全匹配。
内容的提问来源于stack exchange,提问作者md1305
相关产品推荐
相关产品推荐

