Hướng dẫn how do you remove duplicates from two dictionaries in python? - làm thế nào để bạn loại bỏ các bản sao từ hai từ điển trong python?

Điều đầu tiên cần lưu ý là bạn không có hai từ điển khác nhau. Bạn có hai danh sách từ điển khác nhau. Thứ hai là bạn không giải thích chính xác những gì được tính là một bản sao. Thứ ba là bạn không nói phải làm gì với khóa relevance.

Tôi sẽ giả sử rằng hai từ điển với các khóa tương đương typename là giống hệt nhau và bạn muốn các giá trị relevance được hợp nhất vào một danh sách. Sau đó, bạn có thể trung bình chúng, hoặc bất cứ điều gì.

def gen_key(d):
    return (d['name'], d['type'])

def merge_dupes(dlist):
    relevance = [float(d['relevance']) for d in dlist]
    name, type = dlist[0]['name'], dlist[0]['type']
    return {'name':name, 'type':type, 'relevance':relevance}

to_merge = {}
for l in (x, y):
    for d in l:
        to_merge.setdefault(gen_key(d), []).append(d)

# if you want another list
merged_list = [merge_dupes(l) for l in to_merge.itervalues()]

# if you'd prefer a dictionary
merged_dict = dict((k, merge_dupes(v)) for k, v in to_merge.iteritems())

Output:

>>> pprint(merged_list)
[{'name': u'Rob Hirschfeld',
  'relevance': [0.44458599999999998],
  'type': u'Person'},
 {'name': 'VMs',
  'relevance': [0.314, 0.52216899999999999],
  'type': 'OperatingSystem'},
 {'name': 'Greg Althaus',
  'relevance': [0.32700000000000001, 0.41398800000000002],
  'type': 'Person'},
 {'name': 'Storage Hardware',
  'relevance': [0.17399999999999999],
  'type': 'Company'},
 {'name': u'iSCSI',
  'relevance': [0.37648900000000002],
  'type': u'FieldTerminology'},
 {'name': 'Force10',
  'relevance': [0.26600000000000001, 0.31405899999999998],
  'type': 'Company'},
 {'name': 'http://Dell.com/OpenStack',
  'relevance': [0.085000000000000006],
  'type': 'URL'},
 {'name': 'Dell',
  'relevance': [0.72199999999999998, 0.87406499999999998],
  'type': 'Company'},
 {'name': 'iSCSI', 'relevance': [0.122], 'type': 'Technology'}]
>>> pprint(merged_dict)
{('Dell', 'Company'): {'name': 'Dell',
                       'relevance': [0.72199999999999998,
                                     0.87406499999999998],
                       'type': 'Company'},
 ('Force10', 'Company'): {'name': 'Force10',
                          'relevance': [0.26600000000000001,
                                        0.31405899999999998],
                          'type': 'Company'},
 ('Greg Althaus', 'Person'): {'name': 'Greg Althaus',
                              'relevance': [0.32700000000000001,
                                            0.41398800000000002],
                              'type': 'Person'},
 (u'Rob Hirschfeld', u'Person'): {'name': u'Rob Hirschfeld',
                                  'relevance': [0.44458599999999998],
                                  'type': u'Person'},
 ('Storage Hardware', 'Company'): {'name': 'Storage Hardware',
                                   'relevance': [0.17399999999999999],
                                   'type': 'Company'},
 ('VMs', 'OperatingSystem'): {'name': 'VMs',
                              'relevance': [0.314, 0.52216899999999999],
                              'type': 'OperatingSystem'},
 ('http://Dell.com/OpenStack', 'URL'): {'name': 'http://Dell.com/OpenStack',
                                        'relevance': [0.085000000000000006],
                                        'type': 'URL'},
 (u'iSCSI', u'FieldTerminology'): {'name': u'iSCSI',
                                   'relevance': [0.37648900000000002],
                                   'type': u'FieldTerminology'},
 ('iSCSI', 'Technology'): {'name': 'iSCSI',
                           'relevance': [0.122],
                           'type': 'Technology'}}

Chúng ta có thể sử dụng sự hiểu biết vòng lặp hoặc từ điển để loại bỏ các bản sao khỏi từ điển trong Python. Trong khi loại bỏ giá trị trùng lặp khỏi từ điển, các khóa cũng được loại bỏ trong quá trình.

Nếu bạn không quan tâm đến việc giữ lại thứ tự ban đầu thì set(my_list) sẽ loại bỏ tất cả các bản sao.

Mã ví dụ đơn giản.

Sử dụng cho vòng lặp

Đây là phương pháp vũ phu, trong đó thêm giá trị trước tiên xảy ra trong một biến và loại bỏ nó nếu nó lặp lại.

dict1 = {'A': 20, 'B': 15, 'C': 20, 'D': 10, 'E': 20}

temp = []
res = dict()
for key, val in dict1.items():
    if val not in temp:
        temp.append(val)
        res[key] = val

print(res)

Đầu ra::

Hướng dẫn how do you remove duplicates from two dictionaries in python? - làm thế nào để bạn loại bỏ các bản sao từ hai từ điển trong python?

Sử dụng từ điển hiểu

Phương pháp này làm giống như trên nhưng nó là một tốc ký.

dict1 = {'A': 20, 'B': 15, 'C': 20, 'D': 10, 'E': 20}

temp = {val: key for key, val in dict1.items()}
res = {val: key for key, val in temp.items()}

print(res)

Đầu ra: {’e,: 20,‘ B,: 15, ‘Diên: 10}: {‘E’: 20, ‘B’: 15, ‘D’: 10}

Viết một chương trình Python để loại bỏ các bản sao khỏi từ điển

Dưới đây là một ví dụ Python cho thấy cách xóa các giá trị trùng lặp khỏi từ điển.

student_data = {'id1':
                    {'name': ['Sara'],
                     'class': ['V'],
                     'subject_integration': ['english, math, science']
                     },
                'id2':
                    {'name': ['David'],
                     'class': ['V'],
                     'subject_integration': ['english, math, science']
                     },
                'id3':
                    {'name': ['Sara'],
                     'class': ['V'],
                     'subject_integration': ['english, math, science']
                     },
                'id4':
                    {'name': ['Surya'],
                     'class': ['V'],
                     'subject_integration': ['english, math, science']
                     },
                }

res = {}

for key, value in student_data.items():
    if value not in res.values():
        res[key] = value

print(res)

Hãy bình luận nếu bạn có bất kỳ nghi ngờ và đề xuất nào về hướng dẫn từ điển Python này.

Lưu ý: IDE: & NBSP; Pycharm & NBSP; 2021.3.3 (Phiên bản cộng đồng) IDE: PyCharm 2021.3.3 (Community Edition)

Windows 10

Python 3.10.1

Tất cả & nbsp; ví dụ python & nbsp; là trong & nbsp; Python & nbsp; 3, vì vậy có thể khác với các phiên bản Python 2 hoặc nâng cấp. Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.

Hướng dẫn how do you remove duplicates from two dictionaries in python? - làm thế nào để bạn loại bỏ các bản sao từ hai từ điển trong python?

Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.

Làm cách nào để hợp nhất hai từ điển trong Python và loại bỏ các bản sao?

Dưới đây là tám phương pháp tiêu chuẩn mà bạn có thể hợp nhất hai từ điển trong Python ...
1) Sử dụng phương thức Update () ..
2) Sử dụng toán tử hợp nhất (|) ..
3) Sử dụng toán tử ** ..
4) Giải nén từ điển thứ hai ..
5) Sử dụng Phương thức Collection.ChainMap () ..
6) Sử dụng itertools. ....
7) Sử dụng khả năng hiểu từ điển ..
8) Thêm giá trị của các khóa chung ..

Làm thế nào để bạn loại bỏ các yếu tố phổ biến khỏi hai từ điển trong Python?

giữa họ...
Phương pháp 1: Sử dụng phương thức Remove () ..
Phương pháp 2: Sử dụng danh sách hiểu ..
Phương pháp 3: Sử dụng toán tử khác biệt của bộ ..
Phương pháp 4: Sử dụng Phương thức SET Python Set () ..

Làm cách nào để xóa các bản sao trong từ điển?

Sử dụng EverSeen () độc đáo để xóa từ điển trùng lặp trong danh sách.Hàm Everseen () được sử dụng để tìm tất cả các yếu tố độc đáo có trong điều kiện và bảo tồn thứ tự xuất hiện của chúng.Do đó, nó nhớ tất cả các yếu tố từng thấy trong điều đó. for Removing duplicate dictionaries in a list. everseen() function is used to find all the unique elements present in the iterable and preserving their order of occurrence. Hence it remembers all elements ever seen in the iterable.

Từ điển có loại bỏ trùng lặp python không?

Tạo một từ điển, sử dụng các mục danh sách làm khóa.Điều này sẽ tự động xóa bất kỳ bản sao nào vì từ điển không thể có các khóa trùng lặp.This will automatically remove any duplicates because dictionaries cannot have duplicate keys.