代码之家  ›  专栏  ›  技术社区  ›  Thierry Lam

如何检查python字典中是否存在许多键?

  •  8
  • Thierry Lam  · 技术社区  · 14 年前

    我有以下字典:

    sites = {
        'stackoverflow': 1,
        'superuser': 2,
        'meta': 3,
        'serverfault': 4,
        'mathoverflow': 5
    }
    

    为了检查以上字典中是否有多个可用的键,我将执行如下操作:

    'stackoverflow' in sites and 'serverfault' in sites
    

    上面的内容只需要2个键查找就可以维护。有没有更好的方法来处理在一本很大的字典中检查大量的键?

    4 回复  |  直到 7 年前
        1
  •  12
  •   Andrew Jaffe    14 年前

    您可以假装dict的键是一个集合,然后使用set.issubset:

    set(['stackoverflow', 'serverfault']).issubset(sites) # ==> True
    
    set(['stackoverflow', 'google']).issubset(sites) # ==> False
    
        2
  •  9
  •   unutbu    14 年前

    你可以使用 all :

    print( all(site in sites for site in ('stackoverflow','meta')) )
    # True
    print( all(site in sites for site in ('stackoverflow','meta','roger')) )
    # False
    
        3
  •  1
  •   inspectorG4dget    14 年前
    mysites = ['stackoverflow', 'superuser']
    [i for i in mysites if i in sites.keys()]  # ==> sites in the list mysites that are in your dictionary
    [i for i in mysites if i not in sites.keys()]  # ==> sites in the list mysites that are not in your dictionary
    
        4
  •  0
  •   Justin Ethier    14 年前

    你计划进行多少次查找?我觉得你用的方法很好。

    如果有几十个、数百个等的键要与之进行比较,可以将所有目标键放在一个列表中,然后对列表进行迭代,检查以确保每个项都在字典中。