[英]Variable in value in key-value pairs in dictionaries
假设我们有dictionary = ['a':x*2,'b':x*3]
,我们将x
设置为 2。当我在分配后打印出字典时,我得到了上面显示的那个,而不是['a':4,'b':6]
。 这是为什么? 我目前正在尝试为 Project Euler 练习 69 ( https://projecteuler.net/problem=69 ) 提出解决方案,为此我做了以下工作:
import math
from sympy import Symbol
magic_book={1:1,2:1}
maximum=0
for n in range(3,10**6+1):
print(magic_book)
print(n)
if n in magic_book:
if (n/magic_book[n])>maximum:
maximum=n/magic_book[n]
continue
Phi=0
x = Symbol('x')
for m in range(1,n):
if math.gcd(n,m)==1:
magic_book[n*m]=x*magic_book[m]
Phi+=1
x=Phi
if n/Phi>maximum:
maximum=n/Phi
print(maximum)
当我设置x
等于Phi
时, magic_book
不会更新 - 这是为什么?
当您在 Python 中编辑 object 时,它不会返回 go 并更改您之前使用它声明的内容。 参见例如:
x = 1
double_x = 2*x
x = 10
你的问题基本上是问为什么double_x
不是 20。
为了用其他值(如数值)替换符号值,如果您正在处理 SymPy 对象, .subs()
通常是最佳选择。 但是,字典不是 SymPy object 并且它没有.subs()
方法。 然后,您必须遍历字典并替换它的值,如下所示:
for k, v in magic_book.items():
maximum[k] = v.subs(x, Phi) # assuming v is a SymPy object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.