Python checks if any item in a list is a key in a dictionary

What will be the Pythonic way to check if any item in a list is a key in a dictionary?

Example: I have a list of fruits:

fruits = ['apples', 'bananas', 'pears']

And I want to check if ANY fruit is the key in my dictionary, examples:

fruit_dict1 = {'apples': 4, 'oranges': 3, 'dragonfruit': 4} returns True

fruit_dict2 = {'oranges': 3, 'dragonfruit': 9, 'pineapples': 4} returns False

So far, I:

def fruit_checker(list, dict):
    for fruit in list:
        if fruit in dict:
            return True
    return False

It feels strange to look for fruit "in" a dictionary, but it seems that "in" only searches in dictionary words. How exactly does it "work" with different types?

+6
source share
5 answers

try it

In [1]: any([i in fruit_dict1 for i in fruits])
Out[1]: True
In [2]: any([i in fruit_dict2 for i in fruits])
Out[2]: False

AT

In [11]: [i in fruit_dict2 for i in fruits]
Out[11]: [False, False, False]

Which check every element present. And return the list of booleans and anywill return if exists True.

In [13]: any([True,False,False])
Out[13]: True
+7

:

>>> fruits = ['apples', 'bananas', 'pears']
>>> fruit_dict1 = {'apples': 4, 'oranges': 3, 'dragonfruit': 4}
>>> fruit_dict2 = {'oranges': 3, 'dragonfruit': 9, 'pineapples': 4}

:

>>> bool(set(fruits).intersection(fruit_dict1))
True
>>> bool(set(fruits).intersection(fruit_dict2))
False

set(fruits) - . , - . , , :

>>> set(fruits).intersection(fruit_dict1)
set(['apples'])

True False , bool:

>>> bool(set(fruits).intersection(fruit_dict1))
True

, :

>>> bool(set(fruit_dict1).intersection(fruits))
True
>>> bool(set(fruit_dict2).intersection(fruits))
False
+6

, any:

fruits = ['apples', 'bananas', 'pears']
fruit_dict1 = {'apples': 4, 'oranges': 3, 'dragonfruit': 4}

print(any(list_item in fruit_dict1 for list_item in fruits))
>> True

fruit_dict2 = {'oranges': 3, 'dragonfruit': 9, 'pineapples': 4}

print(any(list_item in fruit_dict2 for list_item in fruits))
>> False
+3
set(fruits) & set(fruit_dict1.keys())

from collections import Counter
any(Counter(fruits) & Counter(fruit_dict1.keys()))
0

- , ?

-1

All Articles