我有一个嵌套字典,如下所示:(超过2个键“很多拉拉”)
d={'lala': {'temp1': 'c', 'comp_b': 'bc', 'temp': 'b', 'comp_a': 'ac'}, 'lala1': {'temp1': 'c1', 'comp_b': 'bc1', 'temp': 'b1', 'comp_a': ''}
对于“a”中的所有父键,我需要检查键(comp_a和comp_b)是否有有效值。 在本例中,“lala1”的“comp_a”没有值。所以我需要我的函数只返回“lala”作为输出。在
要检查的父键=>;a= ['lala','lala1']
键的必需值=>;compulsory= ['comp_b','comp_a']
以下是我目前所掌握的情况:
^{pr2}$问题: 如何返回有效的父密钥,即“lala”? 有没有更好的方法来完成我目前所做的事情?在
如果我正确地理解了这个问题,您想检查字典值是否为所有
compulsory
元素都有一个值?在当然还有一种更优雅的方法可以做到这一点:您可以使用列表理解:
all(d.get(key,e).get(c) for c in compulsory)
在这里非常重要,因为它是一个过滤条件。因此,all(..)
将开始在compulsory
列表上枚举,对于每个元素c
,它将获取该元素并查看其是否为True
。空字符串的truthiness为False
,因此这不起作用。如果键不在字典中,那么.get(c)
将返回None
,它的真实性也是False
。在这里有一个没有
try
except
的干净方法所有的逻辑都发生在列表理解中,它首先遍历
d
中的键,并测试所有强制键都在d[k]
内,d[k][c]
值不是空的。在相关问题 更多 >
编程相关推荐