在 python 中使用字典检查键值的最佳方法

Best way to check key value with dictionary in python

我有一本字典,我想将字典的一些索引添加到变量中。

我知道 try except 比 else if 更 pythonic。我尝试了 try except 并且它工作得很好但是我有很多关键要检查而且我无法弄清楚哪个代码更像 pythonic

这是我的字典:

test = {"token":"eating", "stemm": "eat", "lemm": "eat", "pos":"VPP"}

def method_one(test):
    try:
        token = test["token"]
    except KeyError:
        token = None
    try:
        stemm = test["stemm"]
    except KeyError:
        stemm = None

def method_two(test):
    token = None
    stemm = None
    if "token" in test:
        token = test["token"]
    if "stemm" in test:
        stemm = test["stemm"]

我也试了一次,除了all,但是当一个失败时,我不知道是哪个失败了,所以这个没用。

有没有第三种方法的想法?还是方法一好?

dictget 方法,将 return valueNone。你可以做 item = dict.get(key) 并且这将 return value(如果 key 存在)或 None 否则,这就是你正在寻找的东西:)

>>> d = {'foo': 'bar'}
>>> d.get('foo')
'bar'
>>> item = d.get('fooo')
>>> item is None
True

有一个直接查找结构,其中创建集合 应该存在于字典中的有效键

test = {"token":"eating", "stemm": "eat", "lemm": "eat", "pos":"VPP"}

def validate(d, valkeys): 
   keyset = set(test.keys())
if valkeys.issubset(keyset):
    return True
else:
     return False

if __name__ == "__main__":
   val = set(["token", "stemm"])
   inval = set(["token", "stemm", "st"])
   assert validate(test, val) == True
   assert validate(test, inval) == False