我创建了一个字典,其中键是由3个元素组成的元组,值是一个列表,如下所示:
dic = {}
l = []
for z in range(0,20):
for y in range(0,150):
for x in range(0,200):
for j in range(0,4):
l.append(self.images[j].GetScalarComponentAsDouble(x, y, z, 0))
dic.update({(x,y,z) : l})
print(dic[(25,25,5)])
images
只是一个图像数据列表,从中我得到强度值并将该值存储在列表l
。你知道吗
我希望在字典中看到的最终结果将包含以下形式的项:
{(...),
(150,120,10): [2,5,3,9],
(130,100,16): [4,1,1,8],
(...)}
但由于列表总是附加元素而没有重置,因此无法获得此结果。你知道吗
如何重置列表l
,使每个元组键都有自己的列表值?你知道吗
您可以使用以下代码:
有另一种编写方法,使用
itertool
的product
函数和列表理解:itertools
中的函数通常可以帮助您避免深度嵌套,而列表理解允许您创建列表并在一行中将其分配给字典(尽管为了便于阅读,在本例中我将其分为两行)。你知道吗实际上,由于python字典是无序的,假设您的
GetScalarComponentAsDouble
没有任何副作用,更改x, y z
的循环顺序可以使代码在生成相同输出的同时更易于遵循。你知道吗为了让您的生活更轻松一些,您可以使用^{} 模块中的^{} ,在这种情况下,使用
list
初始化。这是一个很好的用例示例:这将为您创建的每个字典条目创建一个空列表
[]
,然后您可以在创建键时append
到此列表。对于您的情况,这意味着在最后的for
循环中,您可以直接将self.image
附加到字典中:这样就不需要同时使用
list
变量l
。你知道吗另一种方法是在实际使用列表的
for
循环之前初始化一个新列表:这将实现相同的功能,但它将包含两个通常不必要的语句。你知道吗
相关问题 更多 >
编程相关推荐