gpt4 book ai didi

python-2.7 - 如何减少 Python 中 If-Else 语句的代码重复

转载 作者:行者123 更新时间:2023-12-03 09:44:42 24 4
gpt4 key购买 nike

我是一名学生,有到处重复代码的坏习惯,这是我想要改变的事情。

下面是我正在编写的函数的代码片段。快速解释:该代码将查看某人的人力资源网站,并返回有关他所管理的员工的信息(假设他管理任何人)。

员工有两种类型:正式员工和契约(Contract)工。在网站上,经理下面的正式员工都会列在employeeList下,契约(Contract)工会列在contractWorkerList下。

response = opener.open('myFakeOrgHierarchy.com/JohnSmith_The_Manager')
allDataFromPage = (response.read())
jsonVersionOfAllData = json.loads(allDataFromPage)

listOfAllReports = []

numOfEmployeeDirectReports = len(jsonVersionOfAllData['employeeList']['list'])
numOfContractWorkerReports = len(jsonVersionOfAllData['contractWorkerList']['list'])

if numOfEmployeeDirectReports != 0:
for i in range(0, numOfEmployeeDirectReports, 1):
workerInfo = {}
workerInfo['empLname'] = jsonVersionOfAllData['employeeList']['list'][i]['lastName']
workerInfo['empFname'] = jsonVersionOfAllData['employeeList']['list'][i]['firstName']
listOfAllReports.append(workerInfo)

if numOfContractWorkerReports != 0:
for i in range(0, numOfContractWorkerReports, 1):
workerInfo = {}
workerInfo['empLname'] = jsonVersionOfAllData['contractWorkerList']['list'][i]['lastName']
workerInfo['empFname'] = jsonVersionOfAllData['contractWorkerList']['list'][i]['firstName']
listOfAllReports.append(workerInfo)

正如您所看到的,我有几行代码与其他行几乎相同,只有很小的变化。有没有办法检查contractWorkerList和employeeList以查看它们是否不为空,并且(假设它们不为空)遍历contractWorkerList和employeeList并获取值而不重复代码?

(由于我是一个相对初学者,因此您可以提供任何简单的示例和建议,我们将不胜感激)

最佳答案

对于初学者来说,每次看到重复的内容时,请考虑预先创建一个变量并使用它。之后,您可以决定应将哪些内容分解到函数中。下面,我刚刚删除了大部分重复的项目。

response = opener.open('myFakeOrgHierarchy.com/JohnSmith_The_Manager')
allDataFromPage = (response.read())
jsonVersionOfAllData = json.loads(allDataFromPage)

listOfAllReports = []

for listType in ('employeeList', 'contractWorkerList'):

json_ver = jsonVersionOfAllData[listType]['list']
directReports = len(json_ver)

if directReports != 0:
for i in range(0, directReports, 1):
workerInfo = {}
for wi_name, json_name in (('empLname', 'lastName'), ('empFname', 'firstName')):
workerInfo[wi_name] = json_ver[i][json_name]
listOfAllReports.append(workerInfo)

关于python-2.7 - 如何减少 Python 中 If-Else 语句的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com