Sam*_*Sam 7 python dictionary object
所以我有一个由一系列点组成的正方形.在每一点都有一个相应的值.
我想要做的是建立一个这样的字典:
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
square = {}
for x in range(0, 5):
for y in range(0, 5):
point = Point(x,y)
square[point] = None
Run Code Online (Sandbox Code Playgroud)
但是,如果我稍后创建一个新的点对象并尝试使用该点的键访问字典的值,则它不起作用..
>> square[Point(2,2)]
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
square[Point(2,2)]
KeyError: <__main__.Point instance at 0x02E6C378>
Run Code Online (Sandbox Code Playgroud)
我猜这是因为python不认为具有相同属性的两个对象是同一个对象?有没有办法解决?谢谢
Ign*_*ams 12
定义Point.__hash__(),Point.__eq__()以便在dicts中正确比较它们.
当你在它的时候,考虑定义,Point.__repr__()以便你得到Point对象的体面表达.
是的,在Point类上定义__eq__和__hash__方法.
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
def __eq__(self, other):
return self._x == other._x and self._y == other._y
def __hash__(self):
#This one's up to you, but it should be unique. Something like x*1000000 + y.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2888 次 |
| 最近记录: |