Chuyển đổi danh sách danh sách thành từ điển python

Giả sử ta có một danh sách các danh sách, trong đó mỗi danh sách con có hai phần tử i. e. một tên và một số tôi. e

# List of Lists
listOfLists = [ ['John', 34],
                ['Mark', 23],
                ['Suse', 37],
                ['Avni', 29],
                ['John', 100],
                ['John', 102]]

Bây giờ chúng tôi muốn chuyển đổi danh sách danh sách này thành một từ điển. Ở đâu,

  • Phần tử đầu tiên của mỗi danh sách con từ danh sách, sẽ là khóa trong từ điển
  • Phần tử thứ hai của mỗi danh sách con từ danh sách, sẽ là giá trị trong từ điển

Nếu có các mục nhập trùng lặp cho một khóa, thì tất cả giá trị của các khóa đó sẽ được lưu trữ trong danh sách. Ví dụ, danh sách các danh sách ở trên sẽ được chuyển đổi thành một từ điển như thế này,

quảng cáo

{'John': [34, 100, 102],
 'Mark': 23,
 'Suse': 37,
 'Avni': 29}

John có mặt trong ba danh sách con, vì vậy chúng ta cần xây dựng một danh sách làm giá trị của nó trong từ điển

Có nhiều cách khác nhau để làm điều này. Hãy thảo luận từng cái một

Phương pháp 1. Sử dụng vòng lặp

Các bước như sau,

  • Tạo một từ điển trống
  • Lặp lại tất cả các danh sách phụ trong danh sách và đối với mỗi danh sách phụ,
    • Chọn giá trị đầu tiên của danh sách phụ và kiểm tra xem nó có tồn tại trong từ điển hay không,
      • Nếu không, hãy thêm nó vào từ điển làm khóa và sử dụng giá trị thứ hai của danh sách con làm giá trị
      • Nếu có và loại giá trị của nó là danh sách, sau đó thêm giá trị thứ hai của danh sách con vào danh sách đó
      • Nếu có và loại giá trị của nó không phải là danh sách, thì hãy tạo một danh sách trống,
        • Thêm giá trị hiện có cho khóa đó trong danh sách đó
        • Thêm giá trị thứ hai của danh sách con trong danh sách đó
        • Đặt danh sách đó làm giá trị của khóa

Nó sẽ chuyển đổi một danh sách các danh sách con thành một từ điển, trong đó chúng ta có thể có nhiều giá trị cho mỗi khóa

Hãy xem ví dụ hoàn chỉnh,

# List of Lists
listOfLists = [ ['John', 34],
                ['Mark', 23],
                ['Suse', 37],
                ['Avni', 29],
                ['John', 100],
                ['John', 102]]

dictObj = {}

# Iterate over all sublists
for [firstValue, secondValue] in listOfLists:
    # If first value of sublist is not in dict
    # then add it
    if firstValue not in dictObj:
        dictObj[firstValue] = secondValue
    elif isinstance[dictObj[firstValue], list]:
        # If key already exist and value is of list type,
        # then append value in list
        dictObj[firstValue].append[secondValue]
    else:
        # If key already exist and value is not of list type,
        # then create a list and add both the values in it
        dictObj[firstValue] = [dictObj[firstValue]]
        dictObj[firstValue].append[secondValue]

print[dictObj]

đầu ra

{'John': [34, 100, 102], 'Mark': 23, 'Suse': 37, 'Avni': 29}

Phương pháp 2. Sử dụng setdefault[]

Nếu bạn muốn mỗi giá trị của từ điển là một danh sách để nó có thể chứa nhiều giá trị cho một khóa. Sau đó, bạn có thể sử dụng phương pháp từ điển setdefault[]

Lặp lại tất cả các danh sách con trong danh sách và thêm chúng vào từ điển. Đối với mỗi danh sách phụ,

  • Sử dụng giá trị đầu tiên của danh sách phụ làm trường khóa của mục nhập từ điển
  • Sử dụng giá trị thứ hai của danh sách phụ làm trường giá trị của mục nhập từ điển

Nếu mỗi khóa sử dụng giá trị mặc định dưới dạng danh sách, vì vậy nếu khóa chưa tồn tại trong danh sách, thì khi thêm giá trị mặc định của nó là danh sách. Sau đó nối các giá trị vào danh sách đó

Chuyển đổi danh sách danh sách thành từ điển có thể hữu ích trong một số trường hợp nhất định. Chúng ta có thể nghĩ về một danh sách các danh sách Python dưới dạng một bảng cơ sở dữ liệu trong đó danh sách bên ngoài đại diện cho bảng và danh sách bên trong đại diện cho các hàng. Bảng cơ sở dữ liệu có khóa chính và các trường còn lại chứa dữ liệu. Chúng tôi có thể sử dụng khóa đó làm khóa từ điển và phần còn lại của dữ liệu làm giá trị. Hãy để chúng tôi xem cách thực hiện điều đó trong Python…

hiểu từ điển

Hiểu từ điển trong Python là một kỹ thuật hay để tạo cấu trúc dữ liệu từ điển một cách gọn gàng. Giả sử chúng ta có một danh sách ô tô ở định dạng danh sách. Chúng ta cần chuyển đổi nó thành định dạng từ điển. Đối với mỗi danh sách, chúng tôi trích xuất mục đầu tiên làm khóa và các mục còn lại làm danh sách giá trị. Trích xuất khóa đơn giản như lập chỉ mục một mảng. Trích xuất phần còn lại của các mục có thể đạt được bằng cách cắt. Hãy xem…

con trăn

1

2

3

4

5

6

7

# Danh sách danh sách

cars_list = [[1,'Honda','red'], [2,'Toyota','white'], [3,'Mazda','blue']]\

# Chuyển sang từ điển

cars_dict = {xe[0]:ô tô[1. ] cho ô tô trong cars_list}

# Đầu ra bản in

in [cars_dict]

print [cars_dict[1]]

Nếu bạn thực thi đoạn mã trên, bạn sẽ nhận được đầu ra sau…

con trăn

1

2

{1. ['Honda', 'đỏ'], 2: ['Toyota', 'white'], 3: ['Mazda', 'xanh dương']}

['Honda', 'đỏ']

biểu thức trình tạo

Một lần nữa gần như cùng định dạng nhưng sử dụng biểu thức trình tạo để xây dựng đối tượng từ điển. Để biết thêm thông tin về trình lặp và trình tạo, bạn có thể xem bài viết sau. Đây là một ví dụ…

con trăn

1

2

3

4

cars_list = [[1,'Honda','red'], [2,'Toyota','white'], [3,'Mazda','blue']]

cars_dict = dict[[car[0], car[1:]] cho ô tô trong cars_list]

in [cars_dict]

print [cars_dict[1]]

Vòng lặp for thông thường

Logic tương tự nhưng sử dụng vòng lặp thông thường được trình bày bên dưới. Không có gì khác biệt đáng kể ngoại trừ phong cách mã hóa. Đây là một ví dụ…

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

Nó hoạt động bằng cách lặp qua danh sách và danh sách phụ l2. Sau đó, tôi lấy phần tử đầu tiên của l2 và gán nó làm khóa cho dict , sau đó lấy phần tử còn lại của l2 và đặt nó làm giá trị

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

Cách chuyển đổi hai danh sách thành một từ điển .
Nén các danh sách lại với nhau bằng zip[list_1, list_2]
Tạo một từ điển từ danh sách các bộ dữ liệu bằng cách sử dụng hàm tạo dict[] trên kết quả
Nói cách khác, gọi dict[zip[list_1, list_2]] để chuyển đổi hai danh sách thành từ điển

Bạn có thể chuyển đổi một chìa khóa

Phương pháp #1. Sử dụng vòng lặp + item[] Đây là cách mạnh mẽ để chúng tôi có thể thực hiện tác vụ này. Trong phần này, chúng tôi lặp qua tất cả các cặp và trích xuất các phần tử giá trị danh sách bằng cách sử dụng các mục[] và hiển thị chúng trong một danh sách mới.

Chủ Đề