2017-04-11 55 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 

什麼是最Python的方式來進行此事?

我認爲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 

我覺得在....語句和數量,如果數量不bundle.data陳述是多餘的。那是對的嗎?

此代碼沒有意義。如果key1或key2不存在,則引發KeyError

如何結合檢查如果兩個數字都是字典中的鍵並將它們分配給一個變量名,這樣我就可以用這兩種方法做些什麼?

if key1 in data and key2 in data: 
    val1 = data[key1] 
    val2 = data[key2]