不能正确分组

时间:2016-02-10 17:06:09

标签: python string algorithm hashtable

我编写了一个python函数来按字母组对单词列表进行分组:

def groupByAnagram(list):
    dic = {}
    for x in list:
        sort = ''.join(sorted(x))

        if sort in dic == True:
            dic[sort].append(x)
        else:
            dic[sort] = [x]

    for y in dic:
        for z in dic[y]:
            print z

groupByAnagram(['cat','tac','dog','god','aaa'])

但这只会返回:

AAA

TAC

我做错了什么?

2 个答案:

答案 0 :(得分:9)

if sort in dic == True:

感谢operator chaining,此行等同于

if (sort in dic) and (dic == True):

但是dic是一本字典,所以它永远不会与True相提并论。只需完全放弃== True比较。

if sort in dic:

答案 1 :(得分:1)

删除" == True"在你的if子句中。你可以在dic中检查排序。

将if子句更改为:

stream.Position = 0;
var bmp = BitmapFactory.DecodeStream(stream);

一切都按预期工作。

您还可以使用collections包的默认dict删除if子句。这样,您不必每次都检查是否必须为dict创建新列表。

if sort in dic: