我试图将textMessage
对象的列表排序为多个列表。
每个textMessage
都有三个字段—发送方的地址、发送时间和消息正文。在
我有listOfContacts
,它包含Contact
对象。每个Contact
对象有两个字段-联系人的name
和该联系人的listOfTexts
。listOfTexts
中填充了textMessage
对象的列表。在
我的排序函数有问题。给定一个文本列表,如果联系人还不在列表中,我希望它向Contact
添加一个新的Contact
对象。否则,我想将textMessage
对象附加到Contact
内部的listOfTexts
中
我很难确定联系人是否已经存在于listOfContacts
中
def sortObjectArray(textArray):
listOfContacts = []
emptyList = []
for text in TextArray: # For each text in the sorted array
if text.address in listOfContacts.name: # if the text's address is in list of contacts
addText(text) # add the text to the list of texts in contact's class
else:
listOfContacts.append(Contact(text.get("address"), emptyList) #if address not in list of contacts, construct one with an empty list of texts.
我认为if text.address in listOfContacts.name
应该检查Contact
中是否存在name
字段为{n
是短信的发送者。在
我是不是走错了路?在
列表对象没有包含对象的属性。请考虑以下绝对有效的python列表:
^{1}$告诉我为什么
^{pr2}$应该有明确的行为。在
您要做的是使列表中的对象按其名称散列,然后用它们构建一个
set
。在EDIT:散列意味着您实现了
__hash__
函数,在本例中可能只是另外,您应该定义一个
__eq__
函数(eq like equality),以便python可以检查两个触点是否相等:一旦完成了这些,就可以使用
set
类型,它与list
类型一样,但只允许一个“相等”对象。这对联系人列表很有意义!完成后,您只需创建一个虚拟接触对象并检查它是否在集合中。在否则,您只需迭代所有这些:
编辑:它只检查联系人的
any
是否具有与您的text.address
相等的name
属性。在您可能会遇到的第一个问题是listOfContacts没有
^{1}$name
属性,因为它是一个列表而不是Contact
对象。您可以创建一个新的联系人姓名列表,用于检查该地址是否已存在。在相关问题 更多 >
编程相关推荐