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

如何简化将字符列表映射为对应数字组合的Python实现?

更简洁的实现方式

当然有更简洁的写法,这里提供两种实用思路:

思路一:基础映射+动态生成结果

先建立单个字符到数字的对应关系,再根据输入列表批量转换,最后按长度处理输出格式,完全不用写一堆分支判断:

char_to_num = {'a': '1', 'b': '2', 'c': '3'}

def select(choice):
    nums = [char_to_num[char] for char in choice]
    if len(nums) == 1:
        return nums[0]
    return ", ".join(f"'{num}'" for num in nums)

这种写法扩展性极强,后续要是新增字符(比如'd'对应'4'),只需要在char_to_num里加一组键值对就行,不用修改函数逻辑。

思路二:集合映射(适配无序输入)

如果你的输入列表可能出现顺序不一致的情况(比如['b','a']也需要返回"'1', '2'"),可以把所有可能的组合用集合作为键存进字典,用的时候转成不可变集合查找:

choice_map = {
    frozenset({'a'}): '1',
    frozenset({'b'}): '2',
    frozenset({'c'}): '3',
    frozenset({'a', 'b'}): "'1', '2'",
    frozenset({'a', 'c'}): "'1', '3'",
    frozenset({'b', 'c'}): "'2', '3'",
    frozenset({'a', 'b', 'c'}): "'1', '2', '3'"
}

def select(choice):
    return choice_map[frozenset(choice)]

这里用frozenset是因为普通集合是可变类型,不能作为字典的键,而不可变的frozenset可以完美解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:50:46