簡體   English   中英

字典中鍵值對中的值變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM