求助:使用Python collections库实现字符异位词分组的代码
用collections库分组异位词的实现方案
核心思路:异位词的字符组成完全相同,只是顺序不同,将每个字符串排序后得到的结果可以作为分组的唯一标识。借助collections.defaultdict可以轻松实现分组逻辑,无需手动处理键不存在的情况。
完整代码实现
from collections import defaultdict # 输入示例列表 input_list = ['abc','acb','hds','sdh','nm','mn'] # 初始化一个默认值为列表的字典 group_dict = defaultdict(list) for word in input_list: # 将字符串排序后转为字符串,作为分组的键 key = ''.join(sorted(word)) # 将原字符串加入对应键的列表中 group_dict[key].append(word) # 将字典的值转为列表,得到最终结果 result = list(group_dict.values()) print(result)
代码说明
sorted(word):对字符串的字符进行排序,返回字符列表,比如'acb'排序后得到['a','b','c']''.join(...):把排序后的字符列表转回字符串,作为分组的唯一键defaultdict(list):当访问不存在的键时,会自动创建一个空列表作为默认值,省去了判断键是否存在的步骤list(group_dict.values()):把字典中所有的分组列表提取出来,组成最终的结果列表
运行结果
执行代码后,输出与示例一致:
[['abc','acb'],['hds','sdh'],['nm','mn']]
内容的提问来源于stack exchange,提问作者Aria
相关产品推荐
相关产品推荐

