因为['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)