对象列表中的最大值

Max in an object list

我有一个具有以下结构的对象列表:

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)

我return一个值,但不是最大值,我真的不明白我哪里错了。

所有代码都可以在这里找到:https://github.com/kwnovi/melihat/blob/master/main.py

您正在比较 字符串 。它们是按字典顺序排列的,因此首先比较第一个字符,然后比较第二个字符,依此类推。例如,这会将 '80' 排序在 '9' 之后。

如果你想比较它们,你需要将它们转换成整数数值:

return max((v for v in videosData if v.level == depth),
           key=lambda v: int(v.likes))

我将级别上的过滤简化为生成器表达式。