运维开发网

python defaultdict如何在不创建密钥的情况下检查嵌套密钥是否存在或是否为[]

运维开发网 https://www.qedev.com 2020-05-29 11:12 出处:网络 作者:运维开发网整理
结构a = defaultdict(lambda:defaultdict(list))的嵌套defaultdict a中有3种类型的条目. for i in a:
结构a = defaultdict(lambda:defaultdict(list))的嵌套defaultdict a中有3种类型的条目.

for i in a:
    print a[i]

defaultdict(<type 'list'>, {'ldap_uidnumber': [['10002']], 'file': ['ABC', 'xyz']})
defaultdict(<type 'list'>, {'ldap_uidnumber': [], 'file': ['abcd']})
defaultdict(<type 'list'>, {'file': ['/home/testuser/.ssh/id_rsa.pub']})

>如何使用ldap_uidnumber:[]过滤掉第二个?

>如何在没有密钥ldap_uidnumber的情况下过滤掉第三个?

我试过的代码:

for i in a:
    if a[i]["ldap_uidnumber"] and a[i]["ldap_uidnumber"] == []:
        print i

但这不是打印任何内容,而是在此代码之后的第三个值中创建键,看起来像

defaultdict(<type 'list'>, {'ldap_uidnumber': [], 'file': ['/home/testuser/.ssh/id_rsa.pub']})
使用in检查成员身份不会在defaultdict中创建密钥.我会推荐这个.

for i in a:
    if "ldap_uidnumber" in a[i] and      # shortcircuit here in your 3rd el
            not a[i]['ldap_uidnumber']:  # fail here in your 1st el
        # do something

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号