什么时候可以发生?
您有一个自定义类(对象),并且要将相关的元数据存储在内存中。您决定使用python dict并利用更快的查找o(1)。
对于用户对象:
python dictous,eq和hash函数
对于用户对象,跟踪以后计算所需的点击次数。对象将是我们dict的关键,并且点击的数量将是值。在这种情况下,用户将不止一次进行对象。
>>> u1=User(1,"Jill")
>>> clicks=dict()
>>> clicks[u1]=1
>>> clicks
{<User(1 Jill)>: 1}
>>> u2=User(2,"Lock")
>>> clicks[u2]=2
>>> clicks
{<User(1 Jill)>: 1, <User(2 Lock)>: 2}
>>> u3=User(1,"Jill")
>>> clicks[u3]=3
>>> clicks
{<User(1 Jill)>: 1, <User(2 Lock)>: 2, <User(1 Jill)>: 3}
u1
andu3
是同一用户的表示,jill具有相同的user_id 1,但是当创建u3
a的值时,创建了新密钥。
这是因为Python使用对象ID来生成一个哈希,该哈希被用作dict中的键。u1
and and u3
具有不同的对象ID,因此尽管表示同一用户,但仍具有不同的字典键。
>>> id(u1)
140030203095248
>>> id(u3)
140030203095440
>>>
<User(1 Jill)>
value需要对这种情况进行更新,因为它已经存在于字典中。 P>
>>> u1=User(1,"Jill")
>>> clicks=dict()
>>> clicks[u1]=1
>>> clicks
{<User(1,Jill)>: 1}
>>> u2=User(2,"Lock")
>>> clicks[u2]=1
>>> clicks
{<User(1,Jill)>: 1, <User(2,Lock)>: 1}
>>> u3=User(1,"Jill")
>>> clicks[u3]=3
>>> clicks
{<User(1,Jill)>: 3, <User(2,Lock)>: 1}
>>>
使用用户_id 1代表用户吉尔的对象u3
uttheclicks
dict,更新dict u1
中的现有对象,该对象是同一用户的rectresents。