Python check if list of keys exist in dictionary

前端 未结 4 1870
失恋的感觉
失恋的感觉 2020-12-23 15:48

I have a dictionary that looks like that:

grades = {
        \'alex\' : 11,
        \'bob\'  : 10,
        \'john\' : 14,
        \'peter\': 7
       }
         


        
4条回答
  •  粉色の甜心
    2020-12-23 16:15

    You can test if a number of keys are in a dict by taking advantage that .keys() returns a set.

    This logic in code...

    if 'foo' in d and 'bar' in d and 'baz' in d:
        do_something()
    

    can be represented more briefly as:

    if {'foo', 'bar', 'baz'} <= d.keys():
        do_something()
    

    The <= operator for sets tests for whether the set on the left is a subset of the set on the right. Another way of writing this would be .issubset(other).

    There are other interesting operations supported by sets: https://docs.python.org/3.8/library/stdtypes.html#set

    Using this trick can condense a lot of places in code that check for several keys as shown in the first example above.

    Whole lists of keys could also be checked for using <=:

    if set(students) <= grades.keys():
        print("All studends listed have grades in your class.")
    
    # or using unpacking - which is actually faster than using set()
    if {*students} <= grades.keys():
        ...
    

    Or if students is also a dict:

    if students.keys() <= grades.keys():
        ...
    

提交回复
热议问题