【问题标题】:Problem optimizing if conditions in a for loop问题优化 if 循环中的条件
【发布时间】:2019-11-08 03:08:13
【问题描述】:

我对 for 循环中的不同 if 条件有一点问题。我确信有办法优化此代码,但我不知道如何...非常感谢您的帮助!

list1 = list()
list2 = list()
for item1, item2 in zip(data1, data2):
    if 'link' in item1 and 'link' in item2:
        list1.append(item1['link'])
        list2.append(item2['link'])
    elif 'link' in item1['details'] and 'link' in item2['details']:
        list1.append(item1['details']['link'])
        list2.append(item2['details']['link'])
    elif 'title' in item1 and 'title' in item2:
        list1.append(item1['title'])
        list2.append(item2['title'])
    elif 'description' in item1 and 'description' in item2:
        list1.append(item1['description'])
        list2.append(item2['description'])
    elif 'title' in item1['nav']['side'] and 'title' in item2['nav']['side']:
        list1.append(item1['nav']['side']['title'])
        list2.append(item2['nav']['side']['title'])
    elif 'title' in item1['nav']['top'] and 'title' in item2['nav']['top']:
        list1.append(item1['nav']['top']['title'])
        list2.append(item2['nav']['top']['title'])

【问题讨论】:

  • HI 测试,欢迎来到 stackoverflow。您能否详细说明您的问题以及您想要实现的目标?
  • data1data2 中有什么内容?你能edit你的问题,给我们看一个里面的信息例子吗?
  • 您可以更改的一件事是使用 dict.get(key) 而不是 if 语句。
  • 嗨!我正在尝试解析网站上的网页,我正在使用 api 为我的网站的每个页面返回一个 json 文件,并且我将 2 个页面添加到两个列表中,然后我检查它们是否相同以及是否添加了每个一个到另一个列表。

标签: python arrays json list for-loop


【解决方案1】:

您的问题不是很清楚,因为您没有给我们输入数据。您可以使用 python get 执行类似的操作。如果 dict 中不存在项目,python 将返回 None。 python or 是短路,所以不是 None 的第一项是返回。这将解决您的问题。

list1 = list()
list2 = list()
for item1, item2 in zip(data1, data2):
    if 'link' in item1 and 'link' in item2:
        item1_to_append = item1.get('link') 
                        or item1.get('details', {}).get('link') 
                        or item1.get('title', {}) 
                        or item1.get('description', {}) 
                        or item1.get('nav', {}).get('side', {}).get('title') 
                        or item1.get('nav', {}).get('top', {}).get('title')
        item2_to_append = item2.get('link') 
                        or item2.get('details', {}).get('link') 
                        or item2.get('title', {}) 
                        or item2.get('description', {}) 
                        or item2.get('nav', {}).get('side', {}).get('title') 
                        or item2.get('nav', {}).get('top', {}).get('title')
        if item1_to_append:
            list1.append(item_to_append)
        if item2_to_append: 
            list2.append(item2_to_append)

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 2011-07-04
    • 2016-07-11
    • 2011-10-04
    • 2018-10-29
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多