Script Python para comparar as chaves de 2 dicionários e se o mesmo valor de impressão da chave do 2º dicionário


0

Eu tenho 2 dicionários, por exemplo:

dict = {1 : a, 2 : b, 3 : c, 4 : d} 
dict1= {5 : z, 1 : y, 6 : x, 3 : u}

Preciso comparar as chaves de 2 dicionários e, se forem iguais, tenho que imprimir o valor correspondente da chave do 2º dicionário. Por exemplo, ambos os dicionários têm 1 e 3 como chave, então eu tenho que imprimir o valor correspondente no 2º dicionário, ou seja, ele deve imprimir ye u. Como escrever o script python para isso? Eu tentei algo como:

def compare(dictOne,dictTwo):
    for keyOne in dictOne:
        for keyTwo in dictTwo:
            if keyOne == keyTwo:
                print(dictTwo[keyTwo])

Mas não estou obtendo a saída.

Respostas:


2

Isso seria melhor perguntado no StackOverflow.

Aqui está a maneira mais pitônica de fazer isso:

d1 = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
d2 = {'z': 260, 'd': -12, 'r': 1, 'b': 0}

# Use a dictionary comprehension to collect d2 values of shared key
d3 = {key:d2[key] for key in d1 if key in d2}

Esse código python usa uma compreensão de dicionário para iterar pelas d1chaves de e, se a chave estiver em ambos d1e d2, armazene a chave d3com o valor de d2.

Aqui está o resultado no interpretador python:

>>> d1 = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> d2 = {'z': 260, 'd': -12, 'r': 1, 'b': 0}
>>> d3 = {k:d2[k] for k in d1 if k in d2}
>>> d3
{'d': -12, 'b': 0}

Nota: Você não precisa ligar d1.keys(), mas é uma boa prática. Eu intencionalmente não liguei .keys().


0

Formatei seu código corretamente e testei e funcionou para mim. Não sei por que você não estava vendo nenhuma saída.

def compare(dictOne,dictTwo):
    for keyOne in dictOne:
        for keyTwo in dictTwo:
            if keyOne == keyTwo:
                print(dictTwo[keyTwo])

dict1 = {1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd'}
dict2= {5 : 'z', 1 : 'y', 6 : 'x', 3 : 'u'}
compare(dict1,dict2)

Embora não seja o código mais eficiente, ele funciona.

Para algo mais eficiente, sugiro o mesmo código fornecido pelo grawity:

def compare2(dictOne,dictTwo):
    for key in dictOne:
        if key in dictTwo:
            print(dictTwo[key])

-1
for key in dictTwo:
    if key in dictOne:
        print(key, "=", dictTwo[key])

1
Embora isso possa responder à pergunta, seria uma resposta melhor se você pudesse fornecer alguma explicação para isso.
DavidPostill
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.