成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

我可以使用可變對(duì)象作為python中的字典鍵。這是不允許的嗎?

瀏覽:20日期:2022-08-07 11:46:28
如何解決我可以使用可變對(duì)象作為python中的字典鍵。這是不允許的嗎??

具有方法的任何對(duì)象都可以是字典鍵。對(duì)于您編寫(xiě)的類(lèi),此方法默認(rèn)返回基于id(self)的值,并且如果相等性不是由這些類(lèi)的標(biāo)識(shí)決定的,則將它們用作鍵可能會(huì)讓您感到驚訝:

>>> class A(object):... def __eq__(self, other):... return True... >>> one, two = A(), A()>>> d = {one: 'one'}>>> one == twoTrue>>> d[one]’one’>>> d[two]Traceback (most recent call last): File '<stdin>', line 1, in <module>KeyError: <__main__.A object at 0xb718836c>>>> hash(set()) # sets cannot be dict keysTraceback (most recent call last): File '<stdin>', line 1, in <module>TypeError: unhashable type: ’set’

在2.6版中進(jìn)行了更改:__hash__現(xiàn)在可以設(shè)置為None,以將類(lèi)實(shí)例明確標(biāo)記為不可哈希。[]

class Unhashable(object): __hash__ = None解決方法

class A(object): x = 4i = A()d = {}d[i] = 2print di.x = 10print d

我以為只有不可變的對(duì)象才可以是字典鍵,但是上面的對(duì)象是可變的。

標(biāo)簽: Python 編程
相關(guān)文章: