gpt4 book ai didi

python - 双向/反向映射

转载 作者:IT老高 更新时间:2023-10-28 21:11:32 28 4
gpt4 key购买 nike

我在 python 中做这个交换机的事情,我需要跟踪谁在和谁说话,所以如果 Alice --> Bob,那么这意味着 Bob --> Alice。

是的,我可以填充两个 HashMap ,但我想知道是否有人有想法用一个来做。

或者建议其他数据结构。

没有多个对话。假设这是一个客户服务调用中心,所以当 Alice 拨入总机时,她只会与 Bob 通话。他的回复也只发给她。

最佳答案

您可以通过继承 dict 并添加所需的逻辑来创建自己的字典类型。这是一个基本示例:

class TwoWayDict(dict):
def __setitem__(self, key, value):
# Remove any previous connections with these values
if key in self:
del self[key]
if value in self:
del self[value]
dict.__setitem__(self, key, value)
dict.__setitem__(self, value, key)

def __delitem__(self, key):
dict.__delitem__(self, self[key])
dict.__delitem__(self, key)

def __len__(self):
"""Returns the number of connections"""
return dict.__len__(self) // 2

它的工作原理是这样的:

>>> d = TwoWayDict()
>>> d['foo'] = 'bar'
>>> d['foo']
'bar'
>>> d['bar']
'foo'
>>> len(d)
1
>>> del d['foo']
>>> d['bar']
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
KeyError: 'bar'

我确定我没有涵盖所有案例,但这应该可以帮助您入门。

关于python - 双向/反向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com