Thêm danh sách từ điển vào từ điển Python

Điều này là cần thiết bởi vì nếu chúng ta nối trực tiếp đối tượng dict vào danh sách, chúng ta sẽ nối thêm một tham chiếu đến cùng một đối tượng dict (cùng một vị trí trong bộ nhớ)

Đây là một ví dụ về cách điều này có thể đi sai

Lưu ý rằng sau khi cập nhật khóa name của từ điển trong danh sách, chúng tôi cũng đã cập nhật khóa name trong từ điển

Lý do cho điều này là - chúng tôi đã không tạo một bản sao, vì vậy chúng tôi đã thêm một tham chiếu đến cùng một từ điển trong danh sách

Nếu bạn có một từ điển với các cặp khóa-giá trị lồng nhau, hãy tạo một bản sao sâu để thay thế

Phương thức tạo một bản sao sâu của đối tượng được cung cấp

Bạn chỉ cần sử dụng copy.deepcopy nếu từ điển của bạn chứa các đối tượng khác, như danh sách, thể hiện lớp hoặc từ điển lồng nhau

Bây giờ chúng tôi không còn gặp sự cố khi cập nhật một giá trị trong từ điển trong danh sách cập nhật cùng một giá trị trong từ điển khác

Chúng tôi đã cập nhật từ điển trong danh sách nhưng giá trị tương tự trong từ điển gốc vẫn không thay đổi

Lý do cho điều này là - chúng tôi đã tạo một bản sao của từ điển gốc và thêm bản sao đó vào danh sách, do đó chúng tôi đã thêm từ điển vào danh sách theo giá trị chứ không phải để tham khảo

Từ điển trong danh sách được lưu trữ ở một vị trí hoàn toàn khác trong bộ nhớ so với từ điển gốc và chúng là 2 đối tượng riêng biệt

Trong Python, bạn có thể có Danh sách từ điển. Bạn đã biết rằng các phần tử của Danh sách Python có thể là các đối tượng thuộc bất kỳ loại nào

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo danh sách từ điển, cách truy cập chúng, cách thêm từ điển vào danh sách và cách sửa đổi chúng

Tạo danh sách từ điển trong Python

Trong chương trình sau, chúng tôi tạo một danh sách có độ dài 3, trong đó cả ba phần tử đều thuộc kiểu dict

Chương trình Python

myList = [ { 'foo':12, 'bar':14 }, { 'moo':52, 'car':641 }, { 'doo':6, 'tar':84 } ] print(myList)Chạy

đầu ra

[{'foo': 12, 'bar': 14}, {'moo': 52, 'car': 641}, {'doo': 6, 'tar': 84}]

Mỗi phần tử của danh sách là một từ điển

Khóa truy cập. cặp giá trị trong Danh sách từ điển

Từ điển giống như bất kỳ phần tử nào trong danh sách. Do đó, bạn có thể truy cập từng từ điển của danh sách bằng cách sử dụng chỉ mục

Và chúng tôi biết cách truy cập một khóa cụ thể. giá trị của từ điển sử dụng khóa

Trong chương trình sau, chúng ta sẽ in một số giá trị của từ điển trong danh sách bằng cách sử dụng phím

Chương trình Python

myList = [ { 'foo':12, 'bar':14 }, { 'moo':52, 'car':641 }, { 'doo':6, 'tar':84 } ] print(myList[0]) print(myList[0]['bar']) print(myList[1]) print(myList[1]['moo']) print(myList[2]) print(myList[2]['doo'])Chạy

đầu ra

{'foo': 12, 'bar': 14} 14 {'moo': 52, 'car': 641} 52 {'doo': 6, 'tar': 84} 6

Cập nhật khóa. các cặp giá trị của Từ điển trong Danh sách Từ điển

Trong chương trình sau, chúng tôi sẽ cập nhật một số key. cặp giá trị của từ điển trong danh sách. Cập nhật giá trị cho khóa trong từ điển đầu tiên, thêm khóa. cặp giá trị vào từ điển thứ hai, xóa khóa. cặp giá trị từ từ điển thứ ba

Chương trình Python

myList = [ { 'foo':12, 'bar':14 }, { 'moo':52, 'car':641 }, { 'doo':6, 'tar':84 } ] #update value for 'bar' in first dictionary myList[0]['bar'] = 52 #add a new key:value pair to second dictionary myList[1]['gar'] = 38 #delete a key:value pair from third dictionary del myList[2]['doo'] print(myList)Chạy

đầu ra

[{'foo': 12, 'bar': 52}, {'moo': 52, 'car': 641, 'gar': 38}, {'tar': 84}]

Nối từ điển vào danh sách từ điển

Trong chương trình sau, chúng ta sẽ thêm một từ điển vào danh sách các từ điển

Chương trình Python

myList = [ { 'foo':12, 'bar':14 }, { 'moo':52, 'car':641 }, { 'doo':6, 'tar':84 } ] #append dictionary to list myList.append({'joo':48, 'par':28}) print(myList)Chạy

đầu ra

[{'foo': 12, 'bar': 14}, {'moo': 52, 'car': 641}, {'doo': 6, 'tar': 84}, {'joo': 48, 'par': 28}]

Tóm lược

Trong hướng dẫn về Ví dụ Python này, chúng ta đã tìm hiểu về danh sách từ điển trong Python và các thao tác khác nhau trên các thành phần của nó, với sự trợ giúp của các ví dụ chi tiết

Danh sách và từ điển trong Python là 2 cấu trúc dữ liệu trong Python dùng để lưu trữ dữ liệu. Danh sách Python là một chuỗi các đối tượng được sắp xếp theo thứ tự, trong khi từ điển không có thứ tự. Các mục trong danh sách có thể được truy cập bằng một chỉ mục (dựa trên vị trí của chúng) trong khi các mục trong từ điển có thể được truy cập bằng các phím chứ không phải theo vị trí của chúng

Hãy xem cách chuyển đổi danh sách Python thành từ điển

Mười cách khác nhau để chuyển đổi danh sách Python thành từ điển

  1. Chuyển đổi danh sách các bộ thành từ điển
  2. Chuyển đổi hai danh sách có cùng độ dài thành từ điển
  3. Chuyển đổi hai danh sách có độ dài khác nhau thành từ điển
  4. Chuyển đổi danh sách các mục khóa, giá trị thay thế thành từ điển
  5. Chuyển đổi danh sách từ điển thành một từ điển duy nhất
  6. Chuyển đổi danh sách thành từ điển bằng cách sử dụng enumerate()
  7. Chuyển đổi danh sách thành từ điển bằng cách hiểu từ điển
  8. Chuyển đổi danh sách thành từ điển bằng dict. fromkeys()
  9. Chuyển đổi danh sách lồng nhau thành từ điển bằng cách hiểu từ điển
  10. Chuyển đổi danh sách thành từ điển bằng Counter()

1. Chuyển đổi danh sách các bộ dữ liệu thành từ điển

Hàm tạo itertools.zip_longest(*iterables,fillvalue=None)0 xây dựng từ điển trực tiếp từ chuỗi các cặp khóa-giá trị

#Converting list of tuples to dictionary by using dict() constructor
color=[('red',1),('blue',2),('green',3)]
d=dict(color)
print (d)#Output:{'red': 1, 'blue': 2, 'green': 3}

2. Chuyển đổi hai danh sách có cùng độ dài thành từ điển

Chúng ta có thể chuyển đổi hai danh sách có cùng độ dài sang từ điển bằng cách sử dụng itertools.zip_longest(*iterables,fillvalue=None)1

itertools.zip_longest(*iterables,fillvalue=None)1 sẽ trả về một trình vòng lặp của các bộ dữ liệu. Chúng ta có thể chuyển đổi đối tượng zip đó thành một từ điển bằng cách sử dụng hàm tạo itertools.zip_longest(*iterables,fillvalue=None)0

zip()

Tạo một trình lặp tổng hợp các phần tử từ mỗi lần lặp

“______8_______4. Trả về một bộ lặp của các bộ, trong đó bộ thứ i chứa phần tử thứ i từ mỗi chuỗi đối số hoặc bộ lặp. Trình vòng lặp dừng khi hết vòng lặp đầu vào ngắn nhất. Với một đối số có thể lặp lại duy nhất, nó trả về một trình lặp gồm 1 bộ. Không có đối số, nó trả về một trình vòng lặp trống. ” — Trăn

Thí dụ

Sử dụng zip()

nguồn hình ảnh. Tác giả

3. Chuyển đổi hai danh sách có độ dài khác nhau thành từ điển

Chúng ta có thể chuyển đổi hai danh sách có độ dài khác nhau sang từ điển bằng cách sử dụng itertools.zip_longest(*iterables,fillvalue=None)5

Theo

“______8_______6. Tạo một iterator tổng hợp các phần tử từ mỗi iterables. Nếu các lần lặp có độ dài không đồng đều, giá trị còn thiếu sẽ được lấp đầy bằng giá trị lấp đầy. Lặp lại tiếp tục cho đến khi hết lần lặp dài nhất
Trong zip(), phép lặp tiếp tục cho đến khi hết phép lặp ngắn nhất. ”

________số 8_______

Sử dụng itertools.zip_longest(*iterables,fillvalue=None)1, quá trình lặp lại tiếp tục cho đến khi hết thời gian lặp lại ngắn nhất

Sử dụng zip()

Sử dụng itertools.zip_longest(*iterables,fillvalue=None)6, quá trình lặp tiếp tục cho đến khi hết thời gian lặp dài nhất. Theo mặc định, itertools.zip_longest(*iterables,fillvalue=None)9 là s[i:j:k] — slice of s from i to j with step k0

Sử dụng zip_longest()

Hình ảnh của tác giả

itertools.zip_longest(*iterables,fillvalue=None)9 được đề cập là x

Sử dụng zip_longest()

4. Chuyển đổi danh sách khóa thay thế, mục giá trị thành từ điển

Chúng tôi có thể chuyển đổi danh sách các khóa, giá trị thay thế dưới dạng các mục thành từ điển bằng cách sử dụng tính năng cắt

Cắt lát trả về một danh sách mới chứa một chuỗi các mục từ danh sách. Chúng tôi có thể chỉ định một loạt các chỉ số

s[i:j:k] — slice of s from i to j with step k

Chúng ta có thể tạo hai danh sách lát. Danh sách đầu tiên chỉ chứa các khóa và danh sách tiếp theo chỉ chứa các giá trị

l1=[1,'a',2,'b',3,'c',4,'d']

Tạo hai đối tượng lát từ danh sách này

Đối tượng lát đầu tiên sẽ chỉ chứa các khóa

s[i:j:k] — slice of s from i to j with step k2

s[i:j:k] — slice of s from i to j with step k3 không được đề cập. Theo mặc định, nó sẽ bắt đầu từ đầu danh sách

s[i:j:k] — slice of s from i to j with step k4 không được đề cập. Theo mặc định, nó sẽ dừng ở cuối danh sách

s[i:j:k] — slice of s from i to j with step k4 được đề cập là 2

s[i:j:k] — slice of s from i to j with step k2 Trả về danh sách chứa các phần tử từ đầu đến cuối bằng cách sử dụng bước 2 (các phần tử thay thế)

[1,2,3,4]

nguồn hình ảnh. Tác giả

Đối tượng lát thứ hai sẽ chỉ chứa các giá trị

l1=[1,'a',2,'b',3,'c',4,'d']

s[i:j:k] — slice of s from i to j with step k7

s[i:j:k] — slice of s from i to j with step k3 được đề cập là 1. Nó sẽ bắt đầu cắt từ chỉ mục đầu tiên

s[i:j:k] — slice of s from i to j with step k4 không được đề cập. Nó sẽ dừng ở cuối danh sách

l1=[1,'a',2,'b',3,'c',4,'d']0 được đề cập là 2

l1=[1,'a',2,'b',3,'c',4,'d']1] Trả về danh sách chứa các phần tử từ chỉ mục đầu tiên đến cuối bằng cách sử dụng bước 2 (các phần tử thay thế)

['a', 'b', 'c', 'd']

Nguồn hình ảnh. Tác giả

Bây giờ chúng ta có thể hợp nhất hai danh sách bằng hàm itertools.zip_longest(*iterables,fillvalue=None)1

Chuyển đổi danh sách thành từ điển bằng Slicing

5. Chuyển đổi danh sách từ điển thành một từ điển duy nhất

Một danh sách từ điển có thể được chuyển đổi thành một từ điển duy nhất bằng các cách sau

  • l1=[1,'a',2,'b',3,'c',4,'d']3
  • hiểu từ điển
  • l1=[1,'a',2,'b',3,'c',4,'d']4

mệnh lệnh. cập nhật()

Chúng tôi có thể chuyển đổi danh sách từ điển thành một từ điển duy nhất bằng cách sử dụng l1=[1,'a',2,'b',3,'c',4,'d']3

  • Tạo một từ điển trống
  • Lặp lại danh sách từ điển bằng vòng lặp l1=[1,'a',2,'b',3,'c',4,'d']6
  • Bây giờ hãy cập nhật từng mục (cặp khóa-giá trị) vào từ điển trống bằng cách sử dụng l1=[1,'a',2,'b',3,'c',4,'d']3

sử dụng chính tả. cập nhật()

hiểu từ điển

Một cách hiểu từ điển bao gồm các dấu ngoặc _______23_______8 chứa hai biểu thức được phân tách bằng dấu hai chấm theo sau bởi mệnh đề l1=[1,'a',2,'b',3,'c',4,'d']6, sau đó không hoặc nhiều hơn mệnh đề l1=[1,'a',2,'b',3,'c',4,'d']6 hoặc [1,2,3,4]1

l1=[{1:'a',2:'b'},{3:'c',4:'d'}]
d1={k:v for e in l1 for (k,v) in e.items()}

[1,2,3,4]2 — Trả lại từng mục trong danh sách [1,2,3,4]3

[1,2,3,4]4 — Trả về cặp khóa, giá trị trong mục đó. [1,2,3,4]5 [1,2,3,4]6

[1,2,3,4]7— được cập nhật trong từ điển d1

hiểu từ điển

bộ sưu tập. Bản Đồ Chuỗi

Bằng cách sử dụng [1,2,3,4]8, chúng tôi có thể chuyển đổi danh sách từ điển thành một từ điển duy nhất

Theo

“______29_______9. Một ChainMap nhóm nhiều từ điển hoặc cá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. ”

Loại trả về sẽ là l1=[1,'a',2,'b',3,'c',4,'d']0. Chúng ta có thể chuyển đổi thành một từ điển bằng cách sử dụng hàm tạo itertools.zip_longest(*iterables,fillvalue=None)0

6. Chuyển đổi danh sách thành từ điển bằng Enumerate()

Bằng cách sử dụng l1=[1,'a',2,'b',3,'c',4,'d']2, chúng tôi có thể chuyển đổi danh sách thành từ điển với chỉ mục là khóa và mục danh sách là giá trị

l1=[1,'a',2,'b',3,'c',4,'d']2 sẽ trả về một đối tượng liệt kê

Chúng ta có thể chuyển đổi thành dict bằng hàm tạo itertools.zip_longest(*iterables,fillvalue=None)0

Theo

l1=[1,'a',2,'b',3,'c',4,'d']5. Trả về một đối tượng liệt kê. iterable phải là một trình tự, một terator hoặc một số đối tượng khác hỗ trợ phép lặp. Phương thức ____23_______6 của iterator được trả về bởi l1=[1,'a',2,'b',3,'c',4,'d']2 trả về một bộ chứa một số đếm (từ đầu được mặc định là 0) và các giá trị thu được từ việc lặp đi lặp lại nhiều lần

liệt kê()

7. Chuyển đổi danh sách thành từ điển bằng cách hiểu từ điển

Bằng cách sử dụng khả năng hiểu từ điển, chúng ta có thể chuyển đổi danh sách khóa thành từ điển có cùng giá trị

d1={k:"a" for k in l1}

Nó sẽ lặp qua danh sách và thay đổi mục của nó thành một khóa (l1=[1,'a',2,'b',3,'c',4,'d']8) và giá trị sẽ là l1=[1,'a',2,'b',3,'c',4,'d']9 cho tất cả các khóa

8. Chuyển đổi danh sách thành từ điển bằng dict. fromkeys()

['a', 'b', 'c', 'd']0 sẽ chấp nhận một danh sách các khóa, danh sách này được chuyển đổi thành các khóa từ điển và một giá trị sẽ được chỉ định

Giá trị giống nhau sẽ được gán cho tất cả các phím

9. Chuyển đổi danh sách lồng nhau thành từ điển bằng cách hiểu từ điển

Chúng ta có thể chuyển đổi danh sách lồng nhau thành từ điển bằng cách sử dụng khả năng hiểu từ điển

['a', 'b', 'c', 'd']1

Nó sẽ lặp qua danh sách

Nó sẽ lấy mục ở chỉ mục 0 làm khóa và chỉ mục 1 làm giá trị

10. Chuyển đổi danh sách thành từ điển bằng Counter()

“______36_______2. Counter là một lớp con dict để đếm các đối tượng có thể băm. Nó là một bộ sưu tập nơi các phần tử được lưu trữ dưới dạng khóa từ điển và số lượng của chúng được lưu trữ dưới dạng giá trị từ điển. Số lượng được phép là bất kỳ giá trị số nguyên nào kể cả số không hoặc số âm. ” — Trăn

collections.Counter(iterable-or-mapping)

['a', 'b', 'c', 'd']3 sẽ chuyển đổi các mục trong danh sách thành khóa và tần số của chúng thành giá trị

Phản đối()

Các liên kết blog khác của tôi

15 điều cần biết để thông thạo từ điển Python

25 câu hỏi hàng đầu về danh sách Python

7 cách hợp nhất từ ​​điển trong Python

Hợp nhất danh sách trong Python

Tài nguyên

Xem không gian này để biết thêm các bài viết về Python và Khoa học dữ liệu. Nếu bạn muốn đọc thêm các hướng dẫn của tôi, hãy theo dõi tôi trên Medium, LinkedIn, Twitter

Làm cách nào để chuyển đổi danh sách từ điển thành từ điển của từ điển trong Python?

Bằng cách sử dụng bộ sưu tập. ChainMap() , chúng tôi có thể chuyển đổi danh sách từ điển thành một từ điển duy nhất. “Bản đồ chuỗi. Một ChainMap nhóm nhiều từ điển hoặc cá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. ” Kiểu trả về sẽ là đối tượng ChainMap.

Làm cách nào để tạo danh sách từ điển trong Python bằng vòng lặp for?

Từ điển Python với vòng lặp For .
Để lặp lại tất cả các mục chính tả, bạn sẽ cần trái cây. mặt hàng()
Để tạo một danh sách lặp lại mỗi phím N lần, hãy làm. [phím]*N
Vì các giá trị chính tả cho biết số lần lặp lại, hãy làm. [giá trị cốt lõi

Chủ đề