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'])
答案 0 :(得分:0)
您的问题不是很清楚,因为您没有给我们输入数据。您可以使用python get做类似的事情。如果在字典中不存在项目,python get return None。 python或短路,因此返回非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)