2017-04-11 4 views
0

私はいくつかのTastyPieバリデーションをしようとしていますが、私は比較的Python(そして一般的なプログラミング)の新機能であり、TastyPieを完全に新しくしています。その後、辞書の複数のキーを確認し、それぞれのキーで何かを行うにはどうすればいいですか?

bundle.data辞書である、と私

  1. が辞書のキーの存在を確認したい

  2. は、各キーの値のためのいくつかのより多くの検証を行います。

サンプルコード:

class SampleClass(Validation): 

    def is_valid(self, bundle, request=None): 
     errors = defaultdict(list) 

     for number in (bundle.data['number_one'], bundle.data['number_two']): 
      if number not in bundle.data: 
       errors[number] = ['missing field'] 
      else: 
      # Do more stuff with number 

これについて移動するための最も神託の方法は何ですか?

for number in....ステートメントとif number not in bundle.dataステートメントが冗長であると思います。あれは正しいですか?両方の数字が辞書内のキーであるかどうかをチェックして、それらを変数名に割り当てることができます。

ありがとうございます!

答えて

0

これはTastypieの問題ではありません。それはPythonの問題です。

存在の使用を確認するには:

for key in [key1, key2]: 
    if key not in my_list: 
     # key not exist 
    else: 
     # key exist 

そして、あなたのコード:

class SampleClass(Validation): 

    def is_valid(self, bundle, request=None): 
     errors = defaultdict(list) 

     for number in ('number_one', 'number_two'): 
      if number not in bundle.data: 
       errors[number] = ['missing field'] 
      else: 
       value = bundle.data[number] 
       # Do more stuff with number 

私は....文の数とIF番号のないbundle.dataで考えますステートメントは冗長です。あれは正しいですか?

このコードには意味がありません。 key1またはkey2が存在しない場合は、KeyErrorが生成されます。

両方の数字が辞書のキーである場合、私は両者を併用することができます。

if key1 in data and key2 in data: 
    val1 = data[key1] 
    val2 = data[key2] 
関連する問題