【发布时间】:2012-11-11 11:07:45
【问题描述】:
我的问题与字典键有关。我想为任何单个对象设置一个包含 3 个键的字典。键必须按顺序排列,并且可以具有广泛的值。例如,
dictionary = {(key1,key2,key3) : object}
key1 可以是 1 到 10 之间的任何值 key2 可以是 11 到 20 之间的任何值 key3 可以是 21 到 30 之间的任何值
放置键的顺序很重要。
更具体地说,我的键对应于 x,y,z 笛卡尔坐标的范围,许多对象在其中浮动。我希望能够根据对象的 x,y,z 对对象的相对位置进行排序职位。
有什么方法可以设置,还是我必须采取不同的方法? 谢谢你的帮助!
【问题讨论】:
-
我认为应该是可能的。你为什么不试试呢?
-
看起来你的例子是你应该尝试的。只需将元组作为键
-
请注意字典实际上是您想要的,因为这意味着没有两个对象可以具有完全相同的 xyz 位置(因为每个键只包含一个值)。如果您有一个包含 x、y 和 z 字段的对象列表,则可以将其排序为
sortedByZ = sorted(objects, key = lambda obj: obj.z)。 -
“x,y,z 笛卡尔坐标的范围”是如何定义的?是某种舍入来定义哪些点相等吗?我建议您在将坐标值放入元组以用作键之前“标准化”(例如四舍五入)您的坐标值。然后,当你想取回它时,做同样的事情,标准化可能略有不同的坐标以获得相同的键。
标签: python dictionary key