簡體   English   中英

將字符串值連接到相應的變量名稱

[英]Connect string value to a corresponding variable name

這個問題與我之前的帖子有某種關系。 參見此處,嵌套列表的重疊會創建不需要的間隙

我認為我已經找到了解決方案,但是我不知道如何實現它。

首先是相關代碼,因為我認為這樣解釋我的問題更容易。 我准備了一個小提琴來顯示代碼:

在這里

每次迭代都根據axis填充ag的嵌套列表。 下一次迭代應該填充ag的下一個嵌套列表,但要取決於之前填充的列表的長度。

實現這一點的一般想法如下:

首先,我將頂部for循環中的每個嵌套列表分配給這樣的變量:

    x = ag[0]
    y = ag[1]
    z = ag[2] 

為了標識第一個列表,我需要像這樣訪問data_j 我認為訪問將以這種方式工作。

data_j[i-1]['axis']  

data_j[i-1]['axis']返回xyz作為string

現在,我需要獲取列表的長度,該長度與data_j[i-1]['axis']返回的軸相對應。

問題是如何連接data_j[i-1]['axis']的“值”及其對應的x = ag[0]y = ag[1]z = ag[2]

由於eval()globals()是不好的做法,因此我需要向正確的方向發展。 我找不到解決方案

編輯:我想我想出了一種方法。 我將嘗試使用父循環的迭代器i (請參見小提琴),而不是使用實際的軸名稱,因為它會為data_j每個元素增加,它會創建一個id,我認為我可以使用它創建一個id。將其用於嵌套索引以尋址正確列表的方法。

我設法使用迭代器i解決了它。 請參閱原始文章中的小提琴,以了解我對以下代碼所做的工作:

if i < 0:
    cond = 0
else:
    cond = i
pred_axis = data_j[cond]['axis']      

if pred_axis == 'x':
    g = 0
elif pred_axis == 'y':
    g = 1
elif pred_axis == 'z':
    g = 2   

calc_size = len(ag[g])
n_offset = calc_size+offset

我還沒有弄清楚為什么cond必須是i而不是i-1但是它可以工作。 一旦弄清其背后的邏輯,我就會發布它。

編輯 :它不適用於i它適用於i-1 我對相關列表的索引從1開始。 ag[0]保留用於常量,可以在需要時添加該常量以進行進一步的計算。 因此,由於相關索引從一開始就已經向上移動了1的值,所以我不需要在每次運行中都減少迭代器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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