对象列表中的最大值

时间:2015-03-24 14:01:23

标签: python search max

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

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

1 个答案:

答案 0 :(得分:0)

您正在比较字符串。这些按字典顺序排序,因此首先比较第一个字符,然后是第二个字符等。例如,在'80'之后排序'9'

如果要比较数字,则需要将它们转换为整数:

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

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