【发布时间】:2015-04-07 06:04:35
【问题描述】:
我有一组坐标(在作为原点的元组中)要附加到字典中,然后是另一个元组(端点)。
{(0, 0, 0):(10, 10, 10)}
有可能会将多个相同的原点坐标放入字典中,然后是不同的端点。
如果我尝试这个,它们会覆盖,这就是为什么我厌倦了 here 中存在可变对象的方法。唯一的问题是,如果我尝试从中获取 x、y 和 z,结果证明该对象不可迭代。
有人可以从那里修复代码(将在下面发布我正在做的事情)或给我一个更好的方法吗?谢谢。 (对于可变对象还是新手)
代码:
class coords(object):
def __init__(self,part):
self.part = part
def __str__(self):
return self.part
d = {}
d[coords((0, 10, 0))] = (0 ,0 ,0)
d[coords((0, 10, 0))] = (0 ,1 ,0)
d[coords((0, 10, 0))] = (0 ,2 ,0)
for k in d:
x, y, z = k
print x,y,z
#Here I get the error: "TypeError: 'coords' object is not iterable" at the line "x, y, z = k"
【问题讨论】:
-
为什么不将初始点的字典存储到目标目的地集? {(0, 0, 0):{(10, 10, 10), (2,1,6) 等}}。每当您最初添加点时,请创建一个空集。然后将每个目标目的地添加到集合中。 (一个 defaultdict 也可以简化一些代码)。
-
为什么不直接做
x, y, z = str(k)...或k.part -
@Lalaland 这是一个很好的方法,我之前实际上尝试过这种方法(只是作为一个列表),但我遇到了一些麻烦,但我成功了,谢谢!
标签: python dictionary