Как получить словарные ключи и значения, если оба ключа находятся в двух отдельных словарях? - PullRequest
3 голосов
/ 27 апреля 2020

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

# example:

Dict1 = {'A':3, 'B':5, 'C':2, 'D':5}
Dict2 = {'B':3, 'C':1, 'K':5}

# result--> {'B':3, 'C':1} 

Ответы [ 3 ]

3 голосов
/ 27 апреля 2020

Как словарь для понимания:

>>> {k:v for k, v in Dict2.items() if k in Dict1}
{'B': 3, 'C': 1}
1 голос
/ 27 апреля 2020

Или используйте filter:

>>> dict(filter(lambda x: x[0] in Dict1, Dict2.items()))
{'B': 3, 'C': 1}
>>>
0 голосов
/ 27 апреля 2020

Просто другое решение, не использующее понимание. Эта функция перебирает клавиши k в Dict1 и пытается добавить Dict2[k] к новому dict, который возвращается в конце. Я думаю, что попытка-исключающий подход "pythoni c".

def shared_keys(a, b):
    """
    returns dict of all KVs in b which are also in a
    """
    shared = {}
    for k in a.keys():
        try:
            shared[k] = b[k]
        except:
            pass
    return shared

Dict1 = {'A':3, 'B':5, 'C':2, 'D':5}
Dict2 = {'B':3, 'C':1, 'K':5}
print(shared_keys(Dict1, Dict2))

# >>> {'B': 3, 'C': 1}
...