ヘルプ:逆のdict

3089 ワード


問題入門
私の2週間目の休日の精神で、私は彼の冒険をパイソンで友人に続けることに決めました.彼がそれに取り組んでいた最も最近の問題では、彼にスペイン語で英語の単語と彼らの翻訳の辞書を与えて、彼に逆のプログラムを作成して欲しかったです.彼に与えられた要件は

1 )辞書が関数を通過した場合にエラーの例外を送出する

2 )辞書が関数を通過した場合、辞書関数を返します.
それで、私が問題を経験した方法についての若干の命令によるステップは、一歩です.

辞書の通過を確認する
それで、この問題を読むとき、私が最初に考えたのは、もちろん、関数を定義する必要があるということです.また、if ifステートメントを使用して関数を2つのオプションにするべきです.最初は次のように入力しました.
def invdict(D):
    if D is dict():
        print("item is dictionary")
    else:
        print("item is not a dictionary")
私が作成した次の辞書を走らせようとした時、辞書は辞書ではないという反応を受けました.
thisdict = {
    "dog": "perro",
    "cat": "gato",
    "chicken": "pollo",
    "chicken": "pollo"
    }
私が以前にタイプしたものは、私が作成した辞書を、任意の空の辞書であるdict ()と比較することでした.したがって、それらは同じではありませんでした.私の間違いに気がつき、過去に学んだことについて考えてみると、オブジェクトが指定された型であれば真か偽を返す関数が組み込まれていることを思い出しました.どちらがうまくいったか
def invdict(D):
    if isinstance(D,dict):
        print("item is dictionary")
    else:
        print("item is not a dictionary")
今、私たちはちょうど辞書を逆にする必要がありました.

辞書の反転
私は辞書を逆にする方法がいくつかあると言って始めたい.個人的に私の最初の考えはdict((v, k) for k, v in D.items())のようなものを使用して理解方法に行くことですが、私が最初に言ったように、この問題はZIPメソッドを使用して指定されました.だから私たちがしなければならないことを行うには、実際にはかなり簡単です.辞書自体がキーと値をリストとして別々に呼び出すことができますので、私たちがする必要があるのは、結果を辞書としてdicts ()を使用して、その辞書を作成するには、2つのlist zip ()を接続する必要があります.それで、我々全員は、dict(zip(D.values(), D.keys()))を持ちます.
したがって、出力をすべて一緒に置くのは次のようになります.
def invdict(D):
    if isinstance(D,dict):
        return dict(zip(D.values(), D.keys()))
    else:
        raise Exception('This should be a dictionary')

結論
まず第一に、誰かが学校仕事のためにこれを使っているならば、私はあなたが少なくともあなたが各々の部分が何をしているかについて理解するのを助けるためにこれを読んでいることを望みます.第二に、私は休日の楽しさを終えて以来、私は今後数週間でいくつかのより複雑な機械学習のコンセプトに取り組むことを楽しみにしています.
ハッピーホリデーズ!