Penguin
Penguin

Reputation: 2441

An increasing parameter in dictionary

I have a parameter p and a dictionary val_dict:

p = 0

val_dict = {
    'p' : p/15
}

Is there a way for the dictionary to be automatically updated when I'm increasing p?

print(val_dict['p'])
p+=1
print(p)
print(val_dict['p'])

>>>0.0
1
0.0

Update 1:
Following the comments I made a function in the dictionary:

p = 0

def equation_calc(param):
    return (param/15)

val_dict = {
    'p' : equation_calc(p)
}

Though, it seems like it's still immutable:

print(val_dict['p'])
p+=1
print('p: ', p)
print(val_dict['p'])

>>>0.0
p:  1
0.0

    

Upvotes: 0

Views: 63

Answers (1)

Reti43
Reti43

Reputation: 9797

In the line 'p' : equation_calc(p) you store the result of the function to the key 'p'. But this result is still an immutable object. What you want instead is to store the reference to the function itself, which you can then call later with your arguments.

val_dict = {
    'p' : equation_calc
}

for p in [0, 1]:
    print(val_dict['p'](p))

If you function is of the form def function(args): return value, and the value expression is short, you can also use a lambda expression, like this

val_dict = {
    'p' : lambda p: p / 15
}

Upvotes: 1

Related Questions