【问题标题】:Python - better approach than if else [closed]Python - 比 if else 更好的方法 [关闭]
【发布时间】:2020-08-17 21:17:08
【问题描述】:

我正在尝试改进我的旧代码,想知道是否有更好的方法可以处理以下示例:

利用api获取搜索结果。结果包括不同的问题严重性,我想获取单个计数并按严重性将每个案例附加到列表中。

在当前的代码中,我可以这样做:

sev = dict()
sev_list = list()
sev_list_2 = list()
sev_list_3 = list()

for i in search_result:
    issue_key = i.key
    issue_severity = i.severity.name

    if issue_severity == 'Sev_1':
        sev_list.append(issue_key)
        sev_count = len(sev_list)
        sev[issue_severity] = (sev_list, sev_count)
    elif issue_severity == 'Sev_2':
        sev_list_2.append(issue_key)
        sev_count = len(sev_list_2)
        sev[issue_severity] = (sev_list_2, sev_count)
    elif issue_severity == 'Sev_3':
        sev_list_3.append(issue_key)
        sev_count = len(sev_list_3)
        sev[issue_severity] = (sev_list_3, sev_count)

结果:

{'Sev_1': (['issue_1', 'issue_4', 'issue_5'], 3), 'Sev_2': (['issue_2', 'issue_3', 'issue_6', 'issue_7'], 4), 'Sev_3': (['issue_8'], 1)}

虽然这工作正常,但这并不是最好的方法,因为当存在多个严重性时,它很难扩展。

我在想这样的事情,但如果我想使用这种方法,我不确定追加的正确方法是什么。也欢迎任何其他建议。

sev = dict()
sev_list = list

for i in query_result:
    issue_key = i.key
    issue_severity = i.severity.name

    severity_list = ['Sev_1', 'Sev_2', 'Sev_3']

    for x in severity_list:
        if issue_severity == x:
            sev_list.append(bug_key)
            sev_count = len(sev_list)
            sev[x] = (sev_list, sev_count)



      

【问题讨论】:

标签: python-3.x list if-statement


【解决方案1】:

下面的代码将完成这项工作。

sev = dict()
for i in search_result:
    issue_key = i.key
    issue_severity = i.severity.name
    if issue_severity in sev:
        sev[issue_severity][0].append(issue_key)
        sev[issue_severity][1] +=1
    else:
        sev[issue_severity] = ([issue_key], 1)


【讨论】:

    【解决方案2】:

    因此,既然您已经在考虑添加另一个循环以降低复杂性,我建议您在此处使用字典理解

    # Initialize the empty dict.
    sev = {sev_level:([], 0) for sev_level in ['Sev_1', 'Sev_2', 'Sev_3']}
    
    # Fill the items
    for i in search_result:
        sev[i.key][0].append(i.severity.name)
        sev[i.key][1] += 1
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      相关资源
      最近更新 更多