You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为字典中非VDD、GND的重复值分配从1开始的唯一ID

问题解决方法

你的代码存在两个关键问题:

  • 语法错误:if b != :缺少比较对象,会直接触发语法报错
  • 逻辑错误:直接修改原字典的同时,没有记录已处理的原始值,导致相同值会被分配不同ID,且后续循环无法获取原始值做判断

要实现相同值对应相同ID的需求,正确的思路是先为所有需要替换的唯一值建立ID映射,再批量替换。具体代码如下:

my_dict = {1: 'VDD', 2: 'VDD', 7: 'VDD', 0: 0, 3: 0, 4: 0, 6: 9, 13: 9, 'GND': 'GND', 15: 'GND', 12: 12}
# 构建原始值到ID的映射字典
value_id_map = {}
current_id = 1

# 先遍历一次字典,为每个唯一的非VDD/GND值分配ID
for val in my_dict.values():
    if val not in ('VDD', 'GND') and val not in value_id_map:
        value_id_map[val] = current_id
        current_id += 1

# 遍历字典替换目标值
for key in my_dict:
    if my_dict[key] in value_id_map:
        my_dict[key] = value_id_map[my_dict[key]]

print(my_dict)

运行后输出结果:

{1: 'VDD', 2: 'VDD', 7: 'VDD', 0: 1, 3: 1, 4: 1, 6: 2, 13: 2, 'GND': 'GND', 15: 'GND', 12: 3}

逻辑说明

  1. 用value_id_map存储每个需要替换的原始值对应的ID,确保相同值只会被分配一次递增的ID
  2. 第二次遍历字典时,仅将存在于映射表中的值替换为对应ID,保留'VDD'和'GND'不变

内容的提问来源于stack exchange,提问作者donatello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:12:48