繁体   English   中英

在不使用 Python 的内置可迭代函数的情况下,从单词列表中对字谜列表进行分组

[英]Grouping list of anagrams from a list of words without using in-built iterable functions of Python

输入:字符串列表

I = ["top","doom","pot","mood","cigar"] 

输出:集合列表(以任何顺序),其中每个集合包含一组来自输入的字谜

O = [{"mood", "doom"}, {"cigar"}, {"top", "pot"}]

我在 Python 中的解决方案(但是,它使用sorted这是一个内置的 Python 函数)。 在将它们存储在dict或任何其他替代品之前,我可以为所有字谜创建唯一key其他方式是sorted

def groupAnagrams(S):
    res = dict()
    for elem in S:
        elem = elem.lower()
        sorted_elem = ''.join(sorted(elem))
        if res.get(sorted_elem) is None:
            res[sorted_elem] = set([elem])
        else:
            res[sorted_elem].add(elem)
    return list(res.values())

只需使用frozensetdict.setdefault

def groupAnagrams(S):
    res = defaultdict(list)

    for k, elem in zip(map(frozenset, S), S):
        res.setdefault(k, set()).add(elem)

    return list(res.values())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM