消除分隔字符串(不是列表)中的重复条目并返回排序结果的大多数 Pythonic 方法

Most Pythonic way to eliminate duplicate entries in a delimited string (not a list) and returning the sorted result

我需要对数千个字符串进行一些处理(每个字符串都是列表中的一个元素,从 SQL table 中的记录导入)。

每个字符串包含多个由一致的分隔符分隔的短语。我需要 1) 消除字符串中的重复短语; 2) 将剩余的短语和 return 去重、排序的短语排序为分隔字符串。

这是我想象的:

def dedupe_and_sort(list_element, delimiter):

    list_element = delimiter.join(set(list_element.split(f'{delimiter}')))
    return( delimiter.join(sorted(list_element.split(f'{delimiter}'))) )

string_input = 'e\\a\\c\\b\\a\\b\\c\\a\\b\\d'
string_delimiter = "\\"

output = dedupe_and_sort(string_input, string_delimiter)

print(f"Input: {string_input}")
print(f"Output: {output}")

输出如下:

Input: e\a\c\b\a\b\c\a\b\d
Output: a\b\c\d\e

这是最有效的方法还是有更有效的替代方法?

可以避免两次拆分(只是不要在第一步中加入),并且在将 delimiter 传递给 split() 时不需要使用 f-string。

def dedupe_and_sort(list_element, delimiter):

    distinct_elements = set(list_element.split(delimiter))
    return delimiter.join(sorted(distinct_elements))