我有一个具有以下结构的对象列表:
class video:
def __init__(self,level,videoID,title, url, views, comments, likes, dislikes):
self.level= level
self.id = videoID
self.title = str(title).encode('utf-8')
self.url = url
self.views = views
self.comments = comments
self.likes = likes
self.dislikes = dislikes
我正在尝试在特定级别上获得最大喜欢的视频。
所有视频均在 videosData
中我试过
def maxLikes (depth):
concernData = []
for x in xrange(0,len(videosData)):
if (videosData[x].level == depth):
concernData.append(videosData[x])
return max(concernData, key = lambda x: x.likes)
我返回一个值但不是最大值,我真的不明白我哪里出错了。
所有代码均可在此处获取:https://github.com/kwnovi/melihat/blob/master/main.py
答案 0 :(得分:0)
您正在比较字符串。这些按字典顺序排序,因此首先比较第一个字符,然后是第二个字符等。例如,在'80'
之后排序'9'
。
如果要比较数字,则需要将它们转换为整数:
return max((v for v in videosData if v.level == depth),
key=lambda v: int(v.likes))
我将级别上的过滤简化为生成器表达式。