我正在製作一個python程序,其中隨機值生成n次,用作模型仿真的參數值。python詞典,賦值爲總和值爲一定值的隨機值
我定義每個參數的邊界的字典,例如:
parameters = {'A': random.uniform(1,10), 'B': random.uniform(20,40)}
我想添加一些參數,其總和必須是1,是這樣的:
params = {'C1': random.uniform(0.0,1.0), 'C2': 1 - params['C1']}
後者顯然不起作用KeyError: 'C1'
我也試過類似的東西:
params = {'A': random.uniform(1,10), 'B': random.uniform(20,40), 'C': {'C1': None,'C2': None}}
def class_fractions():
for key in params['C']:
if key == 'C1':
params['C'][key] = random.uniform(0.0,1.0)
if key == 'C2':
params['C'][key] = 1.0 - params['C'][key]
但在調用函數後我得到的類型錯誤
TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'
什麼建議嗎?
您的for循環將不起作用,因爲字典不保證順序。所以C2可以在C1之前執行。 – Marcin
'params ['C'] ['C2']'總是'None'。從未分配過一個值。 – helloV