如何检查字典中的多个键,然后对每个键执行某些操作?

时间:2017-04-11 12:31:07

标签: python-2.7 dictionary tastypie

我正在尝试做一些TastyPie验证,但我对Python(以及一般的编程)相对较新,而且对TastyPie来说是全新的,所以欢迎提供帮助。

bundle.data是一本字典,我

  1. 想检查字典中是否存在密钥

  2. 对每个键的值进行更多验证。

  3. 示例代码:

    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语句是多余的。那是对的吗?如果两个数字都是字典中的键并将它们分配给变量名称,那么我如何组合检查以便我可以同时处理两者?

    谢谢!

1 个答案:

答案 0 :(得分: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
  

我认为....语句中的for number和不在bundle.data语句中的if号是多余的。这是对的吗?

这段代码毫无意义。如果key1或key2确实存在,则会引发KeyError

  

如果两个数字都是字典中的键并将它们分配给变量名,那么如何组合检查以便我可以同时处理两者?

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