第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

雙向/反向映射

雙向/反向映射

溫溫醬 2019-10-09 15:36:24
我正在python中進行此總機操作,我需要跟蹤誰在跟誰說話,所以如果Alice-> Bob,則意味著Bob-> Alice。是的,我可以填充兩個哈希圖,但是我想知道是否有人想使用一個哈希圖?;蚪ㄗh其他數(shù)據(jù)結(jié)構(gòu)。沒有多個對話。假設(shè)這是用于客戶服務(wù)呼叫中心的,所以當愛麗絲撥入總機時,她僅會與鮑勃交談。他的答復(fù)也只發(fā)給她。
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

您可以通過子類化dict并添加所需的邏輯來創(chuàng)建自己的字典類型。這是一個基本示例:


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'

我確定我沒有涵蓋所有情況,但這應(yīng)該可以幫助您入門。


查看完整回答
反對 回復(fù) 2019-10-09
?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

在特殊情況下,您可以將兩者都存儲在一個字典中:


relation = {}

relation['Alice'] = 'Bob'

relation['Bob'] = 'Alice'

由于您要描述的是對稱關(guān)系。 A -> B => B -> A


查看完整回答
反對 回復(fù) 2019-10-09
?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

我知道這是一個比較老的問題,但是我想提一個解決這個問題的另一個好方法,就是python軟件包bidict。使用起來非常簡單:


from bidict import bidict

map = bidict(Bob = "Alice")

print(map["Bob"])

print(map.inv["Alice"])


查看完整回答
反對 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 518 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號