[解決済み] 2ウェイ/リバースマップ[重複]について
2022-05-18 05:31:06
質問
もしアリスが --> ボブなら、ボブは --> アリスであることを意味します。
はい、私は2つのハッシュマップを入力することができましたが、私は誰かがそれを1つで行うためのアイデアを持っているかどうか疑問に思っています。
あるいは別のデータ構造を提案してください。
複数の会話はありません。これがカスタマーサービスコールセンターのためのものだとすると、アリスが交換機にダイヤルしたとき、彼女はボブとだけ話すことになります。彼の返事も彼女にしか行きません。
どのように解決するのですか?
をサブクラス化することで、独自の辞書タイプを作成することができます。
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で2つのリストを連結する方法は?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み] Pythonで文字列を反転させる
-
[解決済み] リストを反転させるには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] ネストしたdictからのPythonデータクラス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] IPythonの終了確認を無効にする
-
[解決済み] なぜPython 3.5はPython 3.4に比べてstr.translateがずっと速いのですか?
-
[解決済み] リストスライスの割り当てはどのように行われるのですか?
-
[解決済み] 標準のjsonモジュールでfloatをフォーマットする
-
[解決済み] 乱数の行列を作成する簡単な方法
-
[解決済み] pandasのデータフレームでカスタムソートする
-
[解決済み] Pandasがラベルで選択すると、Seriesを返す場合とDataFrameを返す場合があります。
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加