如何在Python的循环中满足这些条件

2024-03-28 10:03:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找到每个数据行的参与率,然后找到参与率最高的视频标题。你知道吗

dict youtube\u usa\u视频中的“row”由许多元素组成,每个元素的索引都已命名。当我试图设置如下所示的条件时,问题就出现了,python给出了“被零除”的错误消息,因为数据集中有一些视图是零。你知道吗

参与率=评论数量/观点数量

#code below

highest_EGR = 0

for row in youtube_usa_videos:

    comments = row [8]
    views = row [5]
    title = row [1]

    if views != 0:
        EGR = comments / views
    else:
        EGR = 0

    If EGR > highest_EGR:
        highest_EGR = EGR
        top_vid = title 

你能帮我清理我的代码,这样的条件将得到满足,顶级视频标题和它的参与率将被打印?你知道吗


Tags: 数据元素标题数量视频titleyoutube条件
2条回答

最高EGR=0

对于youtube\u usa\u视频中的行:

comments = row [8]
views = row [5]
title = row [1]

if int (views) > 0:
    EGR = int (comments) / int (views)

if EGR > highest_EGR:
    highest_EGR = EGR
    top_vid = title 
print (top_vid, highest_EGR)

好吧,我只是改变了“如果”的观点!=0:'to'如果视图大于0:'and removed'else:'

下面的代码运行良好。你知道吗

考虑用if替换If

highest_EGR = 0

youtube_usa_videos = [['t1',12,45],['t2',34,12],['t3',2,123]]
TITLE_OFFSET = 0
VIEWS_OFFSET = 1
COMMENTS_OFFSET = 2

for row in youtube_usa_videos:

    comments = row [COMMENTS_OFFSET]
    views = row [VIEWS_OFFSET]
    title = row [TITLE_OFFSET]

    if views != 0:
        EGR = comments / views
    else:
        EGR = 0

    if EGR > highest_EGR:
        highest_EGR = EGR
        top_vid = title 
print('highest_EGR: {}'.format(highest_EGR))
# or using max and lambda
max_egr = max(youtube_usa_videos,key=lambda vid:vid[COMMENTS_OFFSET] / vid[VIEWS_OFFSET] if vid[VIEWS_OFFSET] else 0)
print('video with max eger: {}'.format(max_egr))

输出

highest_EGR: 61.5
video with max eger: ['t3', 2, 123]

相关问题 更多 >