Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

Làm thế nào để chuyển đổi danh sách của dict cho dict. Dưới đây là danh sách các dict

data = [{'name': 'John Doe', 'age': 37, 'sex': 'M'},
        {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}]

đến

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

Đã hỏi ngày 8 tháng 3 năm 2011 lúc 17:51Mar 8, 2011 at 17:51

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

4

Một giải pháp khả thi sử dụng tên làm khóa mới:

new_dict = {}
for item in data:
   name = item['name']
   new_dict[name] = item

Với Python 3.x, bạn cũng có thể sử dụng các trình độ toàn diện cho cùng một cách tiếp cận theo cách tốt hơn:

new_dict = {item['name']:item for item in data}

Như đã đề xuất trong một bình luận của Paul McGuire, nếu bạn không muốn cái tên trong Dict bên trong, bạn có thể làm:

new_dict = {}
for item in data:
   name = item.pop('name')
   new_dict[name] = item

Đã trả lời ngày 8 tháng 3 năm 2011 lúc 17:58Mar 8, 2011 at 17:58

Joaquinjoaquinjoaquin

80.2k28 Huy hiệu vàng137 Huy hiệu bạc151 Huy hiệu đồng28 gold badges137 silver badges151 bronze badges

6

Với

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
5
data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
6 trở lên, bạn có thể sử dụng Chainmap

Một nhóm Chainmap nhiều bản đồ hoặc ánh xạ khác lại với nhau để tạo một chế độ xem duy nhất, có thể cập nhật. Nếu không có bản đồ nào được chỉ định, một từ điển trống duy nhất được cung cấp để một chuỗi mới luôn có ít nhất một ánh xạ.

from collections import ChainMap

data = dict(ChainMap(*data))

Amiabl

96417 Huy hiệu bạc26 Huy hiệu đồng17 silver badges26 bronze badges

Đã trả lời ngày 26 tháng 6 năm 2018 lúc 16:47Jun 26, 2018 at 16:47

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

Vlad Bezdenvlad BezdenVlad Bezden

77.8K23 Huy hiệu vàng245 Huy hiệu bạc177 Huy hiệu đồng23 gold badges245 silver badges177 bronze badges

4

Nếu các dicts sẽ không chia sẻ khóa, thì bạn có thể sử dụng:

dict((key,d[key]) for d in data for key in d)

Có lẽ tốt hơn trong trường hợp của bạn để tạo ra một dict với danh sách là giá trị?

newdict={}
for k,v in [(key,d[key]) for d in data for key in d]:
  if k not in newdict: newdict[k]=[v]
  else: newdict[k].append(v)

Sản lượng này:

>>> newdict
`{'age': [37, 17, 57], 'name': ['John Doe', 'Lisa Simpson', 'Bill Clinton'], 'sex': ['M', 'F', 'M']}`

TẠI

12.4K19 Huy hiệu vàng91 Huy hiệu bạc154 Huy hiệu đồng19 gold badges91 silver badges154 bronze badges

Đã trả lời ngày 8 tháng 3 năm 2011 lúc 18:10Mar 8, 2011 at 18:10

Phynfophynfophynfo

4.7201 Huy hiệu vàng23 Huy hiệu bạc38 Huy hiệu đồng1 gold badge23 silver badges38 bronze badges

Hãy thử phương pháp này:

dict((key, val) for k in data for key, val in k.items())

chỉ nha khoa

2.2921 Huy hiệu vàng17 Huy hiệu bạc34 Huy hiệu đồng1 gold badge17 silver badges34 bronze badges

Đã trả lời ngày 18 tháng 9 năm 2018 lúc 8:13Sep 18, 2018 at 8:13

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

AnkankANK

4997 Huy hiệu bạc11 Huy hiệu đồng7 silver badges11 bronze badges

Đừng làm phức tạp quá mức này:

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
0

Paul Roub

36.1K27 Huy hiệu vàng81 Huy hiệu bạc89 Huy hiệu đồng27 gold badges81 silver badges89 bronze badges

Đã trả lời ngày 27 tháng 7 năm 2020 lúc 14:36Jul 27, 2020 at 14:36

MrfrostymrfrostyMrFrosty

1021 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

1

Có lẽ bạn muốn tên là chìa khóa? Bạn không thực sự chỉ định, vì ví dụ thứ hai của bạn không hợp lệ và không thực sự có ý nghĩa.

Lưu ý rằng ví dụ của tôi loại bỏ "tên" khóa khỏi giá trị, có thể mong muốn (hoặc có lẽ không).

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
1

Đã trả lời ngày 8 tháng 3 năm 2011 lúc 18:05Mar 8, 2011 at 18:05

Chmulligchmulligchmullig

12.9k5 Huy hiệu vàng34 Huy hiệu bạc52 Huy hiệu Đồng5 gold badges34 silver badges52 bronze badges

1

5 xu của tôi, không thích bất kỳ câu trả lời nào:

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
2

Đã trả lời ngày 18 tháng 2 lúc 15:25Feb 18 at 15:25

McStarionimcstarionimcstarioni

Huy hiệu bằng đồng 3131 Bạc131 silver badge13 bronze badges

Chỉ trong trường hợp bạn muốn một sự thay thế chức năng (cũng giả sử các tên được muốn là khóa mới), bạn có thể làm

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
3

Đã trả lời ngày 14 tháng 11 năm 2019 lúc 18:15Nov 14, 2019 at 18:15

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
4

Đã trả lời ngày 22 tháng 12 năm 2021 lúc 10:16Dec 22, 2021 at 10:16

Hướng dẫn python convert list of dictionaries to dictionary - python chuyển đổi danh sách từ điển thành từ điển

Kumar Skumar sKumar S

3894 Huy hiệu bạc9 Huy hiệu Đồng4 silver badges9 bronze badges

Làm thế nào một danh sách chuyển đổi từ điển thành từ điển?

Một danh sách các từ điển có thể được chuyển đổi thành một từ điển duy nhất theo các cách sau: Dict.Cập nhật () Hiểu từ điển ...
Tạo một từ điển trống ..
Lặp lại thông qua danh sách các từ điển bằng cách sử dụng một vòng lặp ..
Bây giờ hãy cập nhật từng mục (cặp giá trị khóa) lên từ điển trống bằng Dict.cập nhật() ..

Bạn có thể biến một danh sách thành một python từ điển không?

Bạn có thể chuyển đổi danh sách Python thành từ điển bằng phương thức Dict.FromKeys (), một cách hiểu từ điển hoặc phương thức zip ().Phương thức Zip () rất hữu ích nếu bạn muốn hợp nhất hai danh sách thành một từ điển. fromkeys() method, a dictionary comprehension, or the zip() method. The zip() method is useful if you want to merge two lists into a dictionary.

Một danh sách có thể được chuyển đổi thành một từ điển?

Để chuyển đổi danh sách thành từ điển, chúng ta có thể sử dụng danh sách hiểu và tạo khóa: cặp giá trị của các yếu tố liên tiếp. Về mặt, typecase danh sách thành loại Dict. Finally, typecase the list to dict type.

Chúng ta có thể hợp nhất hai từ điển trong Python không?

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.. It is a very convenient method to merge dictionaries; however, it is only used in the python 3.9 version or more.