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

如何编写Python函数将标签列表转换为唯一二进制编码映射字典

实现思路

先计算能覆盖所有标签数量的最小二进制位长,将每个标签对应的索引转成对应长度的二进制格式,再拆分转为整数元组即可。

实现代码
def encode(labels):
    # 计算需要的二进制位数,保证所有编码长度一致且不重复
    bit_length = (len(labels) - 1).bit_length()
    encode_dict = {}
    for index, label in enumerate(labels):
        # 转二进制并去除前缀,补前导零到指定长度
        bin_val = bin(index)[2:].zfill(bit_length)
        # 逐位转整数后生成元组
        encode_dict[label] = tuple(int(bit) for bit in bin_val)
    return encode_dict
测试验证

4个标签场景测试

labels = ["a", "b", "c", "d"]
print(encode(labels))
# 输出:{'a': (0, 0), 'b': (0, 1), 'c': (1, 0), 'd': (1, 1)},完全匹配要求

2个标签场景测试

默认逻辑下会生成最短的1位唯一编码:

labels = ["a", "b"]
print(encode(labels))
# 输出:{'a': (0,), 'b': (1,)}

如果你需要和给出的示例输出一致(固定2位长度),把代码中计算bit_length的行修改为bit_length = max((len(labels) - 1).bit_length(), 2)即可,修改后测试输出为:

{'a': (0, 0), 'b': (0, 1)}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:45:06