Tập lệnh Python để so sánh các khóa của 2 từ điển và nếu giá trị in bằng nhau của khóa của từ điển thứ 2


0

Tôi có 2 từ điển chẳng hạn:

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

Tôi cần so sánh các khóa của 2 từ điển và nếu chúng bằng nhau, tôi phải in giá trị tương ứng của khóa từ điển thứ 2. Ví dụ, cả hai từ điển đều có 1 và 3 là khóa của chúng, vì vậy tôi phải in giá trị tương ứng của chúng trong từ điển thứ 2 tức là nó sẽ in yu. Làm thế nào để viết kịch bản python cho điều này? Tôi đã thử một cái gì đó như:

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

Nhưng tôi không nhận được đầu ra.

Câu trả lời:


2

Điều này sẽ được hỏi tốt hơn trên StackOverflow.

Đây là cách thức pythonic nhất để làm điều này:

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}

Mã python này sử dụng khả năng hiểu từ điển để lặp qua d1các khóa và, nếu khóa nằm ở cả hai d1d2, lưu trữ khóa d3với giá trị từ đó d2.

Đây là kết quả trong trình thông dịch 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}

Lưu ý: Bạn không cần phải gọi d1.keys(), nhưng đó là một thực hành tốt. Tôi cố tình không gọi .keys().


0

Tôi định dạng mã của bạn một cách chính xác và kiểm tra và nó đã làm việc cho tôi. Tôi không chắc tại sao bạn không thấy bất kỳ đầu ra nào.

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)

Trong khi không phải là mã hiệu quả nhất, nó hoạt động.

Đối với một cái gì đó hiệu quả hơn, tôi sẽ đề xuất cùng một mã mà grawity cung cấp:

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
Trong khi điều này có thể trả lời câu hỏi, nó sẽ là một câu trả lời tốt hơn nếu bạn có thể cung cấp một số lời giải thích tại sao nó làm như vậy.
DavidPostill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.