对象列表中的最大值
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))
我将级别上的过滤简化为生成器表达式。
我有一个具有以下结构的对象列表:
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))
我将级别上的过滤简化为生成器表达式。