Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
81 views
in Technique[技术] by (71.8m points)

python - 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

    
question from:https://stackoverflow.com/questions/65886249/an-increasing-parameter-in-dictionary

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...