Hướng dẫn merge two dictionaries with same keys python - hợp nhất hai từ điển với python khóa giống nhau

Để bổ sung các giải pháp hai danh sách, đây là một giải pháp để xử lý một danh sách duy nhất.single list.

Một danh sách mẫu (liên quan đến NetworkX; được định dạng thủ công ở đây để đọc):

ec_num_list = [((src, tgt), ec_num['ec_num']) for src, tgt, ec_num in G.edges(data=True)]

print('\nec_num_list:\n{}'.format(ec_num_list))
ec_num_list:
[((82, 433), '1.1.1.1'),
  ((82, 433), '1.1.1.2'),
  ((22, 182), '1.1.1.27'),
  ((22, 3785), '1.2.4.1'),
  ((22, 36), '6.4.1.1'),
  ((145, 36), '1.1.1.37'),
  ((36, 154), '2.3.3.1'),
  ((36, 154), '2.3.3.8'),
  ((36, 72), '4.1.1.32'),
  ...] 

Lưu ý các giá trị trùng lặp cho các cạnh tương tự (được xác định bởi các bộ dữ liệu). Để đối chiếu các "giá trị" đó với "khóa" tương ứng của chúng:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 

Nếu cần, hãy chuyển đổi danh sách đó thành Dict:

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))
  ec_num_collection_dict:
  {(82, 433): ['1.1.1.1', '1.1.1.2'],
  (22, 182): ['1.1.1.27'],
  (22, 3785): ['1.2.4.1'],
  (22, 36): ['6.4.1.1'],
  (145, 36): ['1.1.1.37'],
  (36, 154): ['2.3.3.1', '2.3.3.8'],
  (36, 72): ['4.1.1.32'],
  ...}

Người giới thiệu

  • [Chủ đề này] Làm thế nào để hợp nhất nhiều dicts với cùng một khóa?
  • .

Làm cách nào để hợp nhất hai từ điển có cùng một khóa trong Python?

Cách đơn giản nhất để hợp nhất hai từ điển trong Python là bằng cách sử dụng toán tử giải nén (**). Bằng cách áp dụng toán tử "**" vào từ điển, nó mở rộng nội dung của nó là bộ sưu tập các cặp giá trị khóa.

Làm cách nào để hợp nhất nhiều giá trị từ điển có cùng một khóa trong Python?key-value pairs, unlike any other data structure holding the data as a single value element. You can create a dictionary by placing the key-value pair inside the curly brackets({}) separated by comma (,). Moreover, the key and value elements are separated by placing semi-colon(:) between them. Dictionary in python are ordered, changeable, and do not allow duplicates. That means the dictionary cannot have two items with the same key; hence, dictionary keys are immutable. Also, keys in dictionaries are case-sensitive; therefore, the same name but different key cases will be considered distinct data elements.

Python 3.9 đã giới thiệu toán tử hợp nhất (|) trong lớp Dict. Sử dụng toán tử hợp nhất, chúng ta có thể kết hợp từ điển trong một dòng mã duy nhất. Chúng ta cũng có thể hợp nhất các từ điển tại chỗ bằng cách sử dụng toán tử cập nhật (| =).

Ví dụ:

Làm thế nào để tôi hợp nhất từ ​​điển với các khóa chung?

Đầu ra

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}

6) Sử dụng itertools.chain ()

Trình lặp trả về phần tử từ lần đầu tiên có thể sử dụng được cho đến khi nó trống và sau đó nhảy sang phần tiếp theo. Về cơ bản, nó sẽ xử lý chuỗi liên tiếp như một chuỗi duy nhất.

Vì từ điển cũng có thể lặp lại, chúng ta có thể sử dụng hàm chuỗi () từ lớp itertools và hợp nhất hai từ điển. Loại trả về của phương thức này sẽ là một đối tượng và do đó, chúng ta có thể chuyển đổi từ điển bằng hàm tạo Dict ().

7) Sử dụng khả năng hiểu từ điểnno new dictionary is created, and it returns None. If both the dictionary contains the same key and different value, then the final output will overwrite the value of the latter dictionary. Check out the below example for a better understanding of the update() method:

Ví dụ:

dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_1.update(dict_2)
print('Updated dictionary:')
print(dict_1)

Đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.python 3.9 version or more.

Ví dụ:

def Merge(dict_1, dict_2):
	result = dict_1 | dict_2
	return result
	
# Driver code
dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_3 = Merge(dict_1, dict_2)
print(dict_3)

Đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.

3) Sử dụng toán tử **

Ví dụ:

dict_1 = {'John': 15, 'Rick': 10, 'Misa': 12}
print(dict(**dict_1))

Đầu ra

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
0

2) Sử dụng toán tử Merge (|)

Ví dụ:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
1

Đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

2) Sử dụng toán tử Merge (|)

Ví dụ:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
3

Đầu ra

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
4

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.keys of the second dictionary are compulsorily strings. If any int value is encountered, then it will raise the "TypeError" method.

Ví dụ:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
5

Đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.collection module from the ChainMap library which will help you to group multiple dictionaries in a single view. If both the dictionary contains the same key/s, then the value of the first dictionary is fetched in the final output. Note that we will make use of the “import..from..” syntax to import the collection module as shown in the below example:

Ví dụ:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
7

Đầu ra

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
8

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.

3) Sử dụng toán tử **object, and hence, we can convert the dictionary using the dict() constructor.

Ví dụ:

from collections import defaultdict
ec_num_collection = defaultdict(list)
for k, v in ec_num_list:
    ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))
ec_num_collection:
[((82, 433), ['1.1.1.1', '1.1.1.2']),   ## << grouped "values"
((22, 182), ['1.1.1.27']),
((22, 3785), ['1.2.4.1']),
((22, 36), ['6.4.1.1']),
((145, 36), ['1.1.1.37']),
((36, 154), ['2.3.3.1', '2.3.3.8']),    ## << grouped "values"
((36, 72), ['4.1.1.32']),
...] 
9

Đầu ra

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))
  ec_num_collection_dict:
  {(82, 433): ['1.1.1.1', '1.1.1.2'],
  (22, 182): ['1.1.1.27'],
  (22, 3785): ['1.2.4.1'],
  (22, 36): ['6.4.1.1'],
  (145, 36): ['1.1.1.37'],
  (36, 154): ['2.3.3.1', '2.3.3.8'],
  (36, 72): ['4.1.1.32'],
  ...}
0

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.

Ví dụ:

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))
  ec_num_collection_dict:
  {(82, 433): ['1.1.1.1', '1.1.1.2'],
  (22, 182): ['1.1.1.27'],
  (22, 3785): ['1.2.4.1'],
  (22, 36): ['6.4.1.1'],
  (145, 36): ['1.1.1.37'],
  (36, 154): ['2.3.3.1', '2.3.3.8'],
  (36, 72): ['4.1.1.32'],
  ...}
1

Đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.

3) Sử dụng toán tử **

Ví dụ:

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))
  ec_num_collection_dict:
  {(82, 433): ['1.1.1.1', '1.1.1.2'],
  (22, 182): ['1.1.1.27'],
  (22, 3785): ['1.2.4.1'],
  (22, 36): ['6.4.1.1'],
  (145, 36): ['1.1.1.37'],
  (36, 154): ['2.3.3.1', '2.3.3.8'],
  (36, 72): ['4.1.1.32'],
  ...}
3

Đầu ra

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))
  ec_num_collection_dict:
  {(82, 433): ['1.1.1.1', '1.1.1.2'],
  (22, 182): ['1.1.1.27'],
  (22, 3785): ['1.2.4.1'],
  (22, 36): ['6.4.1.1'],
  (145, 36): ['1.1.1.37'],
  (36, 154): ['2.3.3.1', '2.3.3.8'],
  (36, 72): ['4.1.1.32'],
  ...}
4

2) Sử dụng toán tử Merge (|)

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng | nhà điều hành. Đó là một phương pháp rất thuận tiện để hợp nhất từ ​​điển; Tuy nhiên, nó chỉ được sử dụng trong phiên bản Python 3.9 trở lên.

Làm cách nào để hợp nhất hai từ điển có cùng một khóa trong Python?

Cách đơn giản nhất để hợp nhất hai từ điển trong Python là bằng cách sử dụng toán tử giải nén (**).Bằng cách áp dụng toán tử "**" vào từ điển, nó mở rộng nội dung của nó là bộ sưu tập các cặp giá trị khóa.using the unpack operator(**). By applying the "**" operator to the dictionary, it expands its content being the collection of key-value pairs.

Làm cách nào để hợp nhất nhiều giá trị từ điển có cùng một khóa trong Python?

Python 3.9 đã giới thiệu toán tử hợp nhất (|) trong lớp Dict.Sử dụng toán tử hợp nhất, chúng ta có thể kết hợp từ điển trong một dòng mã duy nhất.Chúng ta cũng có thể hợp nhất các từ điển tại chỗ bằng cách sử dụng toán tử cập nhật (| =).merge operator (|) in the dict class. Using the merge operator, we can combine dictionaries in a single line of code. We can also merge the dictionaries in-place by using the update operator (|=).

Làm thế nào để tôi hợp nhất từ điển với các khóa chung?

Hợp nhất hai từ điển có các khóa chung bằng cách sử dụng các khóa ** kwargs phổ biến trong cả D1 và D2 sẽ chứa các giá trị từ D2.Nếu d3 = {** d2, ** d1} -keys phổ biến trong cả D1 và D2 sẽ chứa các giá trị từ D1.using **kwargs Keys that are common in both d1 and d2 will contain values from d2. If d3={**d2,**d1} -Keys that are common in both d1 and d2 will contain values from d1.

Từ điển Python có thể có hai khóa giống nhau không?

Từ điển trong Python đầu tiên, một khóa nhất định chỉ có thể xuất hiện trong một từ điển một lần.Các khóa trùng lặp không được phép.Duplicate keys are not allowed.