我遇到了一個問題,我想將值放在某個匹配值的陣列中。
我已經displacement_gsj_values填充了我想要移植的值,displacement_gsj_match填充了相應的值匹配(按順序)和displacement_all一個更大的陣列,填充了對應的置換_gsj匹配。
例子:
displacement_gsj_values = [[-3.4],[0],[3.874],[7.4],[0.55],[-0.98],[0],[9.99],[-0.35]]
displacement_gsj_match = [[3],[4],[5],[9],[10],[11],[15],[16],[17]]
displacement_all = [[0],[0],[0],[3],[4],[5],[0],[0],[0],[9],[10],[11],[0],[0],[0],[9],[15],[11],[16],[4],[5],[9],[17],[11]]
我想到了一個應該這樣做的回圈:
for i in displacement_all:
if i != 0:
if i in displacement_all[i] == displacement_gsj_match["any value of displacement_gsj_match with the same value of i"]:
displacement_all[i] = displacement_gsj_values["the index of the above matched value"]
else:
pass
它應該將displacement_gsj_values具有相應索引的值displacement_gsj_match(都按順序)放入匹配值的displacement_all中。結果應如下所示:
displacement_all = [[0],[0],[0],[-3.4],[0],[3.874],[0],[0],[0],[7.4],[0.55],[-0.98],[0],[0],[0],[7.4],[0],[-0.98],[9.99],[0],[3.874],[7.4],[-0.35],[-0.98]]
不得不再次發布它,因為有人剛剛回答然后洗掉了他的答案。
uj5u.com熱心網友回復:
我首先會創建一個字典,將值映射到它們的替換:
# Flatten the list of lists
displacement_gsj_match = sum(displacement_gsj_match, [])
displacement_gsj_values = sum(displacement_gsj_values, [])
# Create dictionary with match as key and replacement as value
replacements = dict(zip(displacement_gsj_match, displacement_gsj_values))
看起來像這樣并且使替換更容易:
{3: -3.4,
4: 0,
5: 3.874,
9: 7.4,
10: 0.55,
11: -0.98,
15: 0,
16: 9.99,
17: -0.35}
然后您檢查您的串列并檢查該值是否可以替換或保持不變。我使用了該get()函式,其中第二個引數是默認值。這意味著如果該值在字典中,則將其替換為默認值,否則默認為現有值:
new_displacement = [[replacements.get(x[0], x[0])] for x in displacement_all]
輸出:
[[0],
[0],
[0],
[-3.4],
[0],
[3.874],
[0],
[0],
[0],
[7.4],
[0.55],
[-0.98],
[0],
[0],
[0],
[7.4],
[0],
[-0.98],
[9.99],
[0],
[3.874],
[7.4],
[-0.35],
[-0.98]]
PS:這可以通過多種方式完成,但我覺得這個很好理解。
uj5u.com熱心網友回復:
Pythonic 的方法是直接使用推導:
[lst if lst[0] == 0
else displacement_gsj_values[displacement_gsj_match.index(lst)]
for lst in displacement_all]
正如預期的那樣:
[[0], [0], [0], [-3.4], [0], [3.874], [0], [0], [0], [7.4], [0.55], [-0.98], [0],
[0], [0], [7.4], [0], [-0.98], [9.99], [0], [3.874], [7.4], [-0.35], [-0.98]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/424459.html
上一篇:回圈使用空欄位的打字稿物件
