📜  Python|安全访问嵌套字典键

📅  最后修改于: 2022-05-13 01:54:36.222000             🧑  作者: Mango

Python|安全访问嵌套字典键

有时,在使用Python时,我们可能会遇到一个问题,即我们需要获取字典的二级键,即嵌套键。这种类型的问题在 Web 开发中很常见,尤其是随着 NoSQL 数据库的出现。让我们讨论一些安全获取字典中嵌套可用键的方法。

方法 #1:使用嵌套的get()

该方法用于解决此特定问题,我们只是利用get()的功能在没有值的情况下检查和分配以实现此特定任务。如果不存在任何键,则仅返回非错误 None。

# Python3 code to demonstrate working of
# Safe access nested dictionary key
# Using nested get()
  
# initializing dictionary
test_dict = {'Gfg' : {'is' : 'best'}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# using nested get()
# Safe access nested dictionary key
res = test_dict.get('Gfg', {}).get('is')
  
# printing result
print("The nested safely accessed value is :  " + str(res))
输出 :
The original dictionary is : {'Gfg': {'is': 'best'}}
The nested safely accessed value is :  best

方法 #2:使用reduce() + lambda

上述功能的组合可用于执行此特定任务。它只是使用 lambda函数检查可用键。这种方法的优点是可以一次查询超过1个键,即更多嵌套级别的键,但缺点是它只适用于Python2。

# Python code to demonstrate working of
# Safe access nested dictionary key
# Using reduce() + lambda
  
# initializing dictionary
test_dict = {'Gfg' : {'is' : 'best'}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# using reduce() + lambda
# Safe access nested dictionary key
keys = ['Gfg', 'is']
res = reduce(lambda val, key: val.get(key) if val else None, keys, test_dict)
  
# printing result
print("The nested safely accessed value is :  " + str(res))
输出 :
The original dictionary is : {'Gfg': {'is': 'best'}}
The nested safely accessed value is :  best