我有在python比較兩個自定義列表蟒蛇
我轉換消息比較對象的兩個列表麻煩到
class StatusMessage(object):
def __init__(self, conversation_id, platform):
self.__conversation_id = str(conversation_id)
self.__platform = str(platform)
@property
def conversation_id(self):
return self.__conversation_id
@property
def platform(self):
return self.__platform
現在,當我創建類型StatusMessage的兩個列表
>>> expected = []
>>> expected.append(StatusMessage(1, "abc"))
>>> expected.append(StatusMessage(2, "bbc"))
>>> actual = []
>>> actual.append(StatusMessage(1, "abc"))
>>> actual.append(StatusMessage(2, "bbc"))
,然後我比較使用
>>> cmp(actual, expected)
兩個列表
或
>>> len(set(expected_messages_list).difference(actual_list)) == 0
我不斷收到故障。 當我調試,實際上在列表中像
>>> actual[0].conversation_id == expected[0].conversation_id
>>> actual[0].platform == expected[0].platform
比較每個項目,然後我總是看到
True
做如下返回-1
>>> cmp(actual[0], expected[0])
爲什麼會這樣。我錯過了什麼?
謝謝你的答案timgeb。但是,這是事情,當我比較列表中的元素的順序應該很重要。這就是爲什麼我的第一個方法是使用設置和區別 –
嗯,我試着整理列表,然後做了比較,它爲我工作。 –