Скрипт Python для порівняння ключів з 2-х словників і, якщо рівний друкувати значення ключа 2-го словника


0

У мене є 2 словники, наприклад:

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

Мені потрібно порівняти ключі з 2-х словників, і якщо вони рівні, то я повинен надрукувати відповідне значення ключа 2-го словника. Наприклад, обидва словника мають 1 і 3 як ключ, тому я повинен надрукувати їхнє відповідне значення у другому словнику, тобто він повинен друкувати y і u. Як написати сценарій python для цього? Я спробував щось подібне:

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

Але я не отримую вихід.

Відповіді:


1

Це було б краще запитати на StackOverflow.

Ось найбільш пітонний спосіб зробити це:

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}

Цей код Python використовує словник розуміння для перебору d1 клавіші і, якщо ключ знаходиться в обох d1 і d2збережіть ключ d3 з значенням від d2.

Ось результат інтерпретатора 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}

Примітка: Вам не потрібно телефонувати d1.keys(), але це хороша практика. Я навмисно не закликав .keys().


0

Я відформатував ваш код правильно і перевірений, і він працював для мене. Я не впевнений, чому ви не бачили жодного результату.

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)

Хоча це не найефективніший код, він працює.

Для чогось більш ефективного я запропонував би той самий код, що й графік:

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
Хоча це може відповісти на питання, це була б краща відповідь, якщо б ви могли надати деякі пояснення чому він робить це.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.