我不确定我是否完全理解你想要做什么:)
看起来您一次生成 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 的知识。我会stdu你提到的关键词,比如“dict.iteritems”等……再次感谢。– user1678622 2 小时前
那么dict.iteritems()的作用与dict.keys()的作用有些相同,您已经知道如何迭代。让我们考虑一个更简单的示例,dict.items()
dict.items() 返回字典中所有键值对的 2 元组的完整列表,与dict.keys()返回有限键列表的方式相同。你可以像这样迭代它:
for key, value in dictionary.items():
print "key: %s\nvalue: %s" % (key, value)
不同之处在于,dict.iteritems()返回一个可迭代的对象,您可以......迭代。对于 for 循环,它是相同的,但在引擎盖下,列表一次返回一项,而不是一步构建,这对于大字典来说可能很慢。我希望清除一些模糊不清:)?