Python 三元运算符的替代实现,一行程序

Python 三元运算符的替代实现,一行程序,python,conditional-operator,Python,Conditional Operator,我有一本包含一些数据的词典,我想检查一下强制数据字段的每个字段是否都包含在这本词典中 obligatory_data_fields = ("nickname", "name", "picture", "updated_at", "email", "email_verified", "iss", "sub", "aud", "iat", "exp") a = { "nickname": "a", "name": "abc

我有一本包含一些数据的词典,我想检查一下
强制数据字段的每个字段是否都包含在这本词典中

obligatory_data_fields = ("nickname", "name", "picture", "updated_at", "email", "email_verified",
                                 "iss", "sub", "aud", "iat", "exp")


a = {
  "nickname": "a",
  "name": "abcd@email.gr",
  "picture": "https://s.gravatar.com/avatar/a.png",
  "updated_at": "2020-05-07T08:44:10.091Z",
  "email": "abcd@email.gr",
  "email_verified": 'false',
  "iss": "x",
  "sub": "x",
  "aud": "x",
  "iat": 1588841051,
  "exp": 1588877051
}
所以最明显的是这一点:

for data in obligatory_data_fields:
    if data in a:
        pass
    else:
        print('missing ', data)
我想知道有哪些更好(高效/更快)的方法来实现这一点。 我的意思是一行[我知道我写的那一行是错的]


e、 g
else打印中的数据('missing',data)对于强制数据字段中的数据进行传递

如果您只想验证,可以使用
all

>>> all(field in a for field in obligatory_data_fields)
True
如果您确实需要每个缺失字段的名称,可以使用列表:

>>> missing = [field for field in obligatory_data_fields if field not in a]
>>> missing
[]

您还可以将字典的键转换为一个集合,并使用集合差异来获取缺少的值:

>>> set(obligatory_data_fields)-set(a)
>>> set() # Empty set, every key in obligatory_data_fields is present in 'a'
print('\n'.join([f'missing:{datum}用于强制数据字段中的数据,如果数据不在a中))