Возвращает ключ словаря, содержащий два конкретных значения - PullRequest
0 голосов
/ 11 февраля 2019

Я пришел сегодня с довольно простой проблемой.У меня есть словарь с ключами, содержащими список элементов.Я знаю, как вернуть ключ, если он содержит одно конкретное значение, но как я могу это сделать, если я ищу два конкретных значения вместе?

Давайте предположим, что у меня есть dict my_dict с ключами (от 0 до 10) и список слов для каждого ключа.

Пример:

my_dict = {
    0 : ['bear', 'tiger', 'lion'], 
    1: ['cheetah', 'tiger', 'snake'], 
    2: ['bear', 'tiger', 'elephant'], 
    # and so on...
}

Я хочу вернуть ключи, для которых у меня есть слова «медведь и тигр» вместе:)

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Попробуйте это

my_dict = {0 : ['bear', 'tiger', 'lion'], 1: ['cheetah', 'tiger', 'snake'], 2: ['bear', 'tiger', 'elephant']}
keys = []
for k,v in my_dict.items():
    if 'bear' in v and 'tiger' in v:
        keys.append(k)
print(keys)  # [0, 2]
0 голосов
/ 12 февраля 2019

итерация словаря с помощью функции items, проверка существования значения 1, затем значение 2 в списке значений словаря, если найдено, возвращает ключ.Ниже приведен пример кода, который можно настроить в зависимости от необходимости:

my_dict = {101 : ['bear', 'tiger', 'lion'], 100: ['cheetah', 'tiger', 'snake'], 102: ['bear', 'tiger', 'elephant']}
def get_dict_key(val1,val2):
    for k,v in my_dict.items():
        if val1 in v:
            if val2 in v:
                return k

get_dict_key('cheetah','tiger')
0 голосов
/ 11 февраля 2019

Вы можете повторить и сделать простую проверку

>>> my_dict = {0 : ['bear', 'tiger', 'lion'], 1: ['cheetah', 'tiger', 'snake'], 2: ['bear', 'tiger', 'elephant']}
>>>
>>> [x for x,y in my_dict.items() if 'bear' in y and 'tiger' in y]
[0, 2]
...