2017-11-19 14 views
0

ipywidgetsを使用してさまざまな入力用のスライダを作成する関数を作成していますが、これらのスライダのデフォルト値を設定したいと思います。ipywidgetsのkwargsのデフォルト値

同時に、**kwargsで未定義の値のセットを受け付けるようにしたいと思います。ここで、キーワードは、スライダが動作する辞書のアイテムを示します。簡単なテストケースとして:

Jupyter Notebooks result

あなたが見ることができるように、相互作用スライダーコードは私の機能で検索し、返却する値を指定します。

from ipywidgets import * 
@interact(year = (2011,2021,1), 
      cat = (0,100,1), 
      man = (0,100,1)) # only make sliders for year, cat, man 

def test(year = 2011, **kwargs): #default year, now I only need default everything else 
    data_set = {'cat':("Cat in the hat", 1000), 
       'dog':("Dog and bone", 1750), 
       'man':("Man about the house",114)} #info on cat, dog and man 
    for dictKey, growth in kwargs.iteritems(): 
     itemName, itemValue = data_set[dictKey] #use kw argument to look in data set 
     newValue = itemValue * (1 + growth * (year - 2011)/100) 
     print("Item was: {}\nInitial value: {} \nGrowth: {}%\nNew Value: {}\n".format(itemName, itemValue, growth, newValue)) 

JupyterノートPCでの出力は次のようになります。

しかし、**kwargsのデフォルト値をゼロに設定したいと思います。私が見つけたすべての答えは、data_setの知識や渡される引数に依存しています。私は引数の名前が私の辞書のキーを参照し、値が1-100を持つことを知っているだけですが、私はyearのようにデフォルトを設定する方法を知らないのですか?


NB。申し訳ありませんが、これは非常に基本的な、または以前に尋ねられている場合、私はまだPythonに新しいので、まだ何を検索するか分からない。また、コードに明白な改善がある場合は、コメントに私を教えてください!

クラス ZeroDict辞書を拡張しinexistentキーが要求されるたびに0を返す

答えて

0

class ZeroDict: 
    def __init__(self, dictionary): 
     self.dictionary = dictionary 

    def __getitem__(self, ref): 
     try: 
      return self.dictionary[ref] 
     except KeyError: 
      return 0 

def f(**kwargs): 
    kwargs = ZeroDict(kwargs) 
    print (kwargs['a']+kwargs['b']*kwargs['c']) # print(a+b*c) 


f() 
f(a=4) 
関連する問題