我有一個情況,我有一個表(從 excel 匯入)機智要求和子要求,可以像這個例子一樣看到:
------------- --------
| Requeriment | Points |
------------- --------
| 1 | |
------------- --------
| 2 | |
------------- --------
| 3 | |
------------- --------
| 3.1 | |
------------- --------
| 3.2 | |
------------- --------
| 3.3 | |
------------- --------
| 4 | |
------------- --------
| 5 | |
------------- --------
| 5.1 | |
------------- --------
| 5.2 | |
------------- --------
| 5.2.1 | |
------------- --------
| 5.2.1.1 | |
------------- --------
| 5.3 | |
------------- --------
| 6 | |
------------- --------
所有需求最大值為'1.0',如果存在需求有子需求的情況,則需求值= sum(subrequirments)/total subrequirments,它也適用于子需求和子需求。
在這里,我展示了如何對沒有子要求的要求進行評估,如果它不完整,則為 0,如果已完成,則為 1.0。

帶有子要求的要求將通過以下公式進行評估:要求點=子要求的總和/子要求的值。值將是這樣的:

這張表被轉換成這樣的字典:
{requeriments:{
'1':{'points':'', subrequeriments: {}},
'2':{'points':'', subrequeriments: {}},
'3':{'points':'', subrequeriments: {
'3.1':{'points':'', subrequeriments: {} },
'3.2':{'points':'', subrequeriments: {} },
'3.3':{'points':'', subrequeriments: {} }
}
},
'4':{'points':'', subrequeriments: {}},
'5':{'points':'', subrequeriments: {
'5.1':{'points':'', subrequeriments: {} },
'5.2':{'points':'', subrequeriments: {
'5.2.1':{'points':'', subrequeriments: {
'5.2.1.1':{'points':'', subrequeriments: {}
}
}
},
'5.3':{'points':'', subrequeriments: {} }
}
},
'6':{'points':'', subrequeriments: {}}
}
}
At the end I can not get a good way to evaluate the requirments aplying the function requirment value = sum(subrequirments)/total subrequirments in the nested sub requirments.
Do you know a good way to aply it to a dictionary or at least a good way do do it to a lost or a table?
uj5u.com熱心網友回復:
使用遞回函式:
def calcPoints(d):
points = 0
for k,v in d.items():
if v['points'] == '':
v['points'] = calcPoints(v['subrequirements'])
points = float(v['points'])
return str(points / max(1,len(d)))
輸入:
data = {'requeriments':
{'1': {'points': '1', 'subrequirements': {}},
'2': {'points': '0', 'subrequirements': {}},
'3': {'points': '', 'subrequirements':
{'3.1': {'points': '1', 'subrequirements': {}},
'3.2': {'points': '0', 'subrequirements': {}},
'3.3': {'points': '1', 'subrequirements': {}}}},
'4': {'points': '1', 'subrequirements': {}},
'5': {'points': '', 'subrequirements':
{'5.1': {'points': '1', 'subrequirements': {}},
'5.2': {'points': '', 'subrequirements':
{'5.2.1': {'points': '', 'subrequirements':
{'5.2.1.1': {'points': '1', 'subrequirements': {}},
'5.2.1.2': {'points': '0', 'subrequirements': {}}}},
'5.2.2': {'points': '0', 'subrequirements': {}}}},
'5.3': {'points': '1', 'subrequirements': {}}}},
'6': {'points': '0', 'subrequirements': {}}}}
輸出:
calcPoints(data['requeriments']) # '0.5694444444444444'
print(data)
{'requeriments':
{'1': {'points': '1', 'subrequirements': {}},
'2': {'points': '0', 'subrequirements': {}},
'3': {'points': '0.6666666666666666', 'subrequirements':
{'3.1': {'points': '1', 'subrequirements': {}},
'3.2': {'points': '0', 'subrequirements': {}},
'3.3': {'points': '1', 'subrequirements': {}}}},
'4': {'points': '1', 'subrequirements': {}},
'5': {'points': '0.75', 'subrequirements':
{'5.1': {'points': '1', 'subrequirements': {}},
'5.2': {'points': '0.25', 'subrequirements':
{'5.2.1': {'points': '0.5', 'subrequirements':
{'5.2.1.1': {'points': '1', 'subrequirements': {}},
'5.2.1.2': {'points': '0', 'subrequirements': {}}}},
'5.2.2': {'points': '0', 'subrequirements': {}}}},
'5.3': {'points': '1', 'subrequirements': {}}}},
'6': {'points': '0', 'subrequirements': {}}}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324849.html
標籤:python list dictionary nested evaluation
下一篇:按變數分組后的相交元素
