因为['a'、'b'、'c']和['b'、'a'、'c']有相同的元素,但是python中的['a'、'b'、'c']==['b'、'a'、'c']test返回False。
我知道这是由于索引顺序。但是如何让python认识到列表中的元素实际上是相同的呢?
下面是一个我没有通过测试的例子:

def wordset(wordlist):
"""Return a set of words found in wordlist."""
wordset = []
for i in range(len(wordlist)):
    if wordlist[i] not in wordset:
        wordset.append(wordlist[i])
return wordset

In: wordset(['now', 'is', 'time', 'is', 'now', 'is', 'is']) == ['is', 'now', 'time']
Out: False

最佳答案

无法创建同时等于['a', 'b', 'c']['b', 'a', 'c']的常规列表。如果需要对==比较使用特殊语义,则可能需要编写自己的类型:

class wordset(object):
    def __init__(self, words):
        self.words = set(words)

    def __eq__(self, other):
        if isinstance(other, wordset):
            return self.words == other.words
        return self.words == set(other)

10-07 17:51