消除分隔字符串(不是列表)中的重复条目并返回排序结果的大多数 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))
我需要对数千个字符串进行一些处理(每个字符串都是列表中的一个元素,从 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))