我有一个类似Twitter Twitter推文的类,我认为可能对此有很好的解决方法
class tweet:
def __init__(self, userName, likes, replys, retweets, message, ID):
self.userName = userName
self.likes = likes
self.replys = replys
self.retweets = retweets
self.message = message
self.lenMessage = len(self.message)
self.mentions = self.message.count('@')
self.hastags = self.message.count('#')
self.ID = ID
在我的main class
中,我有一个此类对象的列表。我希望能够在此列表中查看列表中的推文中是否有任何具有特定ID的信息,而我只是想不出确切的表达方式:
from Students import tweet
listoftweets = []
t1 = tweet("ding", 100, 5, 1,"a message", 1906961683)
t2 = tweet("dong" ,5, 5, 5, "another message", 190696969)
t3 = tweet("bang", 1, 1, 1, "anew message",2003)
t4 = tweet("fest" ,3, 3, 3,"a message", 1930)
listoftweets.append(t1)
listoftweets.append(t2)
listoftweets.append(t3)
listoftweets.append(t4)
# now if i wanted to check if there is a object with the attribute ID = 2003
#how would i do this?
if listoftweets.__contains__():
print("the list does contain specified ID")
非常感谢大家
答案 0 :(得分:1)
这是您要寻找的吗?
for l in listoftweets:
if l.ID == "###": # ID to be matched
print("List does contain specified ID")
break
答案 1 :(得分:1)
建议:改用namedtuples
。以下作品:
from collections import namedtuple
class Base:
@property
def lenMessage(self):
return len(self.message)
@property
def mentions(self):
return self.message.count('@')
@property
def hashtags(self):
return self.message.count('#')
class Tweet(Base, namedtuple('BaseTweet', 'userName likes replies retweets message ID')):
pass
listoftweets = [
Tweet("ding", 100, 5, 1,"a message", 1906961683),
Tweet("dong" ,5, 5, 5, "another message", 190696969),
Tweet("bang", 1, 1, 1, "anew message",2003),
Tweet("fest" ,3, 3, 3,"a message", 1930)
]
found = [tweet for tweet in listoftweets if tweet.ID == 2003]
print(found)
这产生
[Tweet(userName='bang', likes=1, replies=1, retweets=1, message='anew message', ID=2003)]
答案 2 :(得分:0)
这样的方法可能会有所帮助:
def get_tweet(id):
for tweet in listoftweets:
if tweet.ID == id:
return tweet