2016-12-11 8 views
0

辞書を関数に渡そうとしているので、関数の最初のパラメータであり、実際に辞書がサブミットされたことを確認するために型チェックが行われます。Pythonの関数間で辞書をパラメータとして渡す?

fridge = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

def fridge_validation(fridge): 
    if not isinstance (fridge,dict) : 
     raise TypeError: ("require a valid dictionary to be submitted!") 

私は次のように働くだろうと思った....

def dummy (fridge): 

return fridge 

test_of_dummy=dummy ({"cheese", "milk", "eggs"}) 

print (test_of_dummy) 

{'eggs', 'milk', 'cheese'} (this was what was printed) 

私はそれを正しく行っている場合は、非常にわかりませんか?また、私は以下のことで混乱しています。

def dummy (fridge): 
    fridge={} 
    return fridge 





    test_of_dummy=dummy ({"cheese", "milk", "eggs"}) 
    print (test_of_dummy) "{}" was outputted... 

しかし、私はすでに変数を渡していたと思った...?では、なぜ{}がtest_of_dummyよりも優先されているようですか?私がやろうとしていたものと同様

は....

1)関数の第一パラメータとして冷蔵庫と呼ばれる辞書を渡します。 isinstanceを使用し、エラーを入力して辞書が実際に辞書であることを確認します。

2)冷蔵庫辞書から引くであろう第2の機能を持ち

答えて

1

あなたはこの例に従うことができ、あなたのfridge変数検証するために:

fridge = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

def fridge_validation (fridge = {}): 
    # Test if fridge is a dict type 
    if not isinstance(fridge, dict): 
     # if fridge isn't a dict type, throw an exception 
     raise TypeError("require a valid dictionary to be submitted!") 
    # if fridge is a dict type return it. So you got your validation 
    else: 
     return fridge 

validation = fridge_validation(fridge) 
print(validation) 

出力:

{'milk': 11, 'feta': 12, 'onion': 32, 'cheese': 10, 'pepper': 14, 'cream': 21} 

をしかし、{"cheese", "milk", "eggs"}set typeないdict typeです。

あなたはPython interpreterを使用して、それを確認することができます。

>> a = {"cheese", "milk", "eggs"} 
>> type(a) 
<class 'set'> 

ご覧のように、{"cheese", "milk", "eggs"}setないdictです。したがって、あなたがfridge_validation()にそれを渡すと、あなたのコードは例外をスローします。

また、あなたの方法で:

def dummy(fridge): 
    fridge = {} 
    return fridge 

リターンは、原因はあなたのコードは常に空のdictで、あなたの冷蔵庫の値を上書きしますです、空dict typeある{}に常に等しくなります。

2番目の質問に対する回答。

あなたはどのようにして値を減算することができますか?答えは簡単です:

あなたのfridge_validation()メソッドで検証した後にdictを取得したとします。たとえば、次のように

validation = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

ので:

print(validation["cheese"]) 

出力:

10 

も:

print(validation["milk"]) 

出力:

11 

他にもそうです。要約すると、辞書から値を減算するには、dictionary["key"]を使用します。これにより、キーの値が出力されます。

また、python dictsとの対処方法を理解するために、このtutorialをお読みいただくことをお勧めします。

1

注:{"cheese", "milk", "eggs"}がセットされています。

最初の関数では、引数を返すだけで、何を得ても驚くことはありません。 2番目の方法では、返す前にfridgeを空のセットに設定しているので、空のセットが返されます。

これはすべてむしろ不要ですが、正確に何をしようとしているのですか?辞書を一度しか操作できないということはどういう意味ですか?

+0

私は一度だけ辞書を操作できると言って謝罪します。それは間違いだった。本質的に、私は冷蔵庫の辞書を取ってキーを削除する機能を書いていました。私は2つのプログラムを混乱させました。ここの午前4時。 私は何をしようとしていますか.... 1)関数に最初のパラメータとしてfridgeという辞書を渡します。 isinstanceを使用し、エラーを入力して辞書が実際に辞書であることを確認します。 2)冷蔵庫の辞書から差し引く2番目の機能があります。 – apronedsamurai

+0

@Iluvavatar、{あなたは "チーズ"、 "ミルク"、 "卵"}がセットであると述べました。 – apronedsamurai

+0

'{" key1 ":" value1 "、" key2 ":" value2 "}'はキーと値があるのでdictです。 '{" value1 "、" value2 "}'はキー、値だけが存在しないためセットです。 – Iluvatar

関連する問題