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

如何将字符串转换为无重复值的字典并按字母顺序排序字典值

Python 字符串转去重排序字典实现方案

我们需要完成两个核心处理逻辑:

  • 将固定格式的多行字符串转换为字典结构,相同键对应的多个值自动去重
  • 对字典每个键对应的列表值按英文字母顺序排序

给定的待处理字符串示例如下:

string = """Luke:sport\nDick:hike\nLisa:game\nLuke:craft\nDick:hike\nLuke:craft\nDick:craft"""

完整实现代码

from collections import defaultdict

def process_string(input_str):
    # 第一步:转换为去重字典
    res_dict = defaultdict(list)
    for line in input_str.strip().split('\n'):
        key, value = line.split(':')
        # 值不存在才添加,实现去重
        if value not in res_dict[key]:
            res_dict[key].append(value)
    
    # 第二步:对每个值列表按字母顺序排序
    for key in res_dict:
        res_dict[key] = sorted(res_dict[key])
    
    return dict(res_dict)

# 调用测试
if __name__ == "__main__":
    result = process_string(string)
    print(result)

运行上述代码后,输出结果和预期完全一致:

{'Luke': ['craft', 'sport'], 'Lisa': ['game'], 'Dick': ['craft', 'hike']}

无需导入依赖的原生实现

如果不想引入collections模块,也可以用Python原生字典实现:

def process_string_native(input_str):
    res_dict = {}
    for line in input_str.strip().split('\n'):
        key, value = line.split(':')
        if key not in res_dict:
            res_dict[key] = []
        if value not in res_dict[key]:
            res_dict[key].append(value)
    # 排序逻辑
    for key in res_dict:
        res_dict[key] = sorted(res_dict[key])
    return res_dict

大数据量优化建议

如果待处理的字符串行数非常多,可先用集合暂存值提升去重效率,判断元素存在的时间复杂度从列表的O(n)降到O(1):

def process_string_high_perf(input_str):
    res_dict = {}
    for line in input_str.strip().split('\n'):
        key, value = line.split(':')
        if key not in res_dict:
            res_dict[key] = set()
        res_dict[key].add(value)
    # 转列表后排序
    for key in res_dict:
        res_dict[key] = sorted(res_dict[key])
    return res_dict

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:48:04