加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:45:58 所属栏目:Python 来源:网络整理
导读:结构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': [
结构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'>,'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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读