我不知道我的理解它到底是什麼,你正在試圖做:)
它看起來像你生成3個值並且每次迭代都希望將它們附加到列表中。我對嗎?
你可以用list.extend方法很容易地做到這一點。假設PyDisplace看起來像下面的代碼。我猜PyDisplace是一個包含3個元素pr鍵的列表,因此我使用了一些僞造數據來展示這個想法。請更新您的問題,如果我的路要走:)
PyDisplace = {
1: [10, 20, 30],
2: [40, 50, 60],
3: [70, 80, 90],
}
OldDisplace = {
1: [1, 2, 3],
2: [4, 5, 6],
3: [7, 8, 9],
}
R_D = [] # or 'list()' if you will
keys = PyDisplace.keys()
keys.sort()
for val in keys:
DX = PyDisplace[val][0] - OldDisplace[val][0]
DY = PyDisplace[val][2] - OldDisplace[val][3]
DZ = PyDisplace[val][2] - OldDisplace[val][2]
# at each iteration, R_D will be extended with
# three new elements: DX, DY, DZ
R_D.extend([DX, DY, DZ])
print R_D
**Output**
In [71]: print R_D
-------> print(R_D)
[9, 18, 27, 36, 45, 54, 63, 72, 81]
那麼,這怎樣從你在做什麼不同?
對於其中一個,R_D是list()而不是dict()。 python中的列表通常是一維的,所以它似乎更適合您的問題。另外,我在每次迭代中都用另一個列表擴展列表。
遍歷字典的另一種方法是使用dict.iteritems方法。這樣,你可以遍歷鍵值對,像這樣:
for k,v in PyDisplace.iteritems():
print "key: %s, value: %s" % (k, v)
**Output:**
key: 1, value: [10, 20, 30]
key: 2, value: [40, 50, 60]
key: 3, value: [70, 80, 90]
編輯:
感謝。它似乎是第一個非常適合我在這個 點。再次我是Python的新手。最終我會學到很多東西,並且在 中感覺到第二種方法很不容易。這意味着我 需要很多關於Python。我會編寫你提到的關鍵詞如 「dict.iteritems」等....再次感謝。 - user1678622 1小時前
那麼什麼dict.iteritems()呢,有點一樣dict.keys()呢,你已經知道如何迭代。讓我們考慮一個更簡單的例子,dict.items() 字典。items()返回字典中所有鍵 - 值對的2元組的完整列表,同樣的方式返回一個有限的鍵列表。你可以遍歷它是這樣的:
for key, value in dictionary.items():
print "key: %s\nvalue: %s" % (key, value)
不同的是,dict.iteritems()返回一個iterable對象,你可以...遍歷。對於for循環來說,它是相同的,但在引擎蓋下,列表一次返回一個項目,而不是一步構建,例如對於大型詞典可能會很慢。我希望清除一些絨毛:)?
我不知道Fortran語言,所以我不能從你的例子告訴......正是將所需的「一維」列表中的每個元素看起來像? – glibdud