Python chia chuỗi thành các cặp giá trị chính

Để tách một chuỗi thành các cặp giá trị chính [i. e dict] có thể sử dụng những điều sau đây,

>>> string = "abc=123,xyz=456" >>> dict[x.split['='] for x in string.split[',']] {'xyz': '456', 'abc': '123'}

Rick Donato

Rick Donato là Kiến trúc sư/Nhà truyền bá tự động hóa mạng và là người sáng lập Packet Coders

Bài đăng mới nhất của Rick Donato [xem tất cả]

  • Cách định cấu hình máy chủ BIND trên Ubuntu - ngày 15 tháng 3 năm 2018
  • Liên đoàn BGP là gì? - ngày 6 tháng 3 năm 2018
  • Cisco – BGP ORF [Lọc tuyến đường đi] là gì? - ngày 5 tháng 3 năm 2018

Bạn muốn trở thành một chuyên gia lập trình?

Đây là lựa chọn thủ công của chúng tôi về các khóa học tốt nhất mà bạn có thể tìm thấy trực tuyến
Khóa học Python Zero to Hero
Chương trình đào tạo chuyên nghiệp về Python
Khóa học lập trình Bash Scripting và Shell
Tự động hóa với khóa học Shell Scripting
Khóa học Bootcamp phát triển web hoàn chỉnh
và các kỳ thi thực hành chứng chỉ được đề xuất của chúng tôi
Bài kiểm tra thực hành AlphaPrep - Bản dùng thử miễn phí

Đưa ra một chuỗi, với các cặp khóa-giá trị khác nhau được phân tách bằng dấu phẩy, nhiệm vụ là chuyển đổi chuỗi đó thành từ điển. Những loại sự cố này phổ biến trong quá trình phát triển web khi chúng tôi tìm nạp đối số từ các truy vấn hoặc nhận phản hồi ở dạng chuỗi. Đưa ra dưới đây là một vài phương pháp để giải quyết nhiệm vụ.  

Phương pháp số 1. Sử dụng hiểu từ điển

Python3




# Python3 code to demonstrate

# converting comma separated string

# into dictionary

 

# Initialising string

ini_string1=

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
0

 

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
1

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
2
Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
3
Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
4
Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
5

 

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
6

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
7

Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
8=
Initial String name ="akshat", course ="btech", branch ="computer"
Resultant dictionary {'name': 'akshat', 'course': 'btech', 'branch': 'computer'}
0
Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
3_______33_______5
Initial String name = akshat, course = btech, branch = computer
Resultant dictionary {'name ': ' akshat', 'course ': ' btech', 'branch ': ' computer'}
3# converting comma separated string7 # converting comma separated string8# converting comma separated string9# into dictionary0# into dictionary1# into dictionary2

Vấn đề. Đưa ra một chuỗi chứa các cặp khóa-giá trị. Bạn sẽ tách chuỗi như thế nào để nhận các cặp khóa-giá trị?

Thí dụ

Bạn phải tách chuỗi đã cho trong bài toán bên dưới bằng cách sử dụng dấu phân cách “

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
0” theo cách sao cho mọi thứ ở bên trái sẽ trở thành khóa và mọi thứ ở bên phải của dấu phân cách trở thành giá trị của một từ điển

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}

Bây giờ không có gì khó chịu nữa, chúng ta hãy đi sâu vào nhiều cách giải quyết vấn đề này

Phương pháp 1. Sử dụng dict[]

Hàm dict[] tích hợp của Python tạo và trả về một đối tượng từ điển mới từ danh sách đối số được phân tách bằng dấu phẩy của ánh xạ key = value. Ví dụ,

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
2 tạo một từ điển với ba ánh xạ.
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
3. Từ điển là một cấu trúc dữ liệu không có thứ tự và có thể thay đổi nên có thể thay đổi sau khi tạo

Tiếp cận. Sử dụng hàm

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
4 với dấu phân cách “
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
5” để tách chuỗi đã cho thành danh sách các chuỗi con được phân tách bằng dấu phẩy. Một lần nữa, sử dụng phương thức
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
4 sao cho dấu phân cách lần này là “
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
0” để tạo một danh sách khác sẽ lưu trữ các khóa và giá trị dưới dạng các phần tử riêng biệt. Sử dụng phương pháp dict[] trong danh sách này để tạo từ điển với tất cả các khóa và giá trị tương ứng

Mã số

st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
li = st.split[","]
# Method 1
d = dict[s.split[':'] for s in li]
print[d]
# {'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}

Đọc liên quan. Python dict[] — Hướng dẫn đơn giản bằng video

Phương pháp 2. Sử dụng bản đồ [] và lambda

điều kiện tiên quyết

  • Hàm map[] biến đổi một hoặc nhiều lần lặp thành một lần lặp mới bằng cách áp dụng "hàm biến đổi" cho các phần tử thứ i của mỗi lần lặp. Các đối số là đối tượng hàm biến đổi và một hoặc nhiều lần lặp
  • Hàm lambda là một hàm ẩn danh trong Python. Nó bắt đầu bằng từ khóa lambda, theo sau là danh sách không hoặc nhiều đối số được phân tách bằng dấu phẩy, tiếp theo là dấu hai chấm và biểu thức trả về. Ví dụ: lambda x, y, z. x+y+z sẽ tính tổng của ba giá trị đối số x+y+z

Đọc liên quan
[i] Bản đồ Python [] - Cuối cùng cũng thành thạo chức năng bản đồ Python [+Video]
[ii] Hàm Lambda trong Python. Giới thiệu đơn giản

Tiếp cận. Sử dụng hàm

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
4 với dấu phân cách “
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
5” để tách chuỗi đã cho thành danh sách các chuỗi con. Sử dụng
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
li = st.split[","]
# Method 1
d = dict[s.split[':'] for s in li]
print[d]
# {'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
2 và đưa vào danh sách tách các chuỗi con làm đối số thứ hai. Đối số đầu tiên phải là một hàm và bạn có thể sử dụng hàm lambda tại đây. Hàm này có thể được sử dụng để phân tách thêm các mục của danh sách bằng cách sử dụng dấu phân cách “
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
0”.  

Mã số

st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
li = st.split[","]
d = dict[map[lambda s: s.split[':'], li]]
print[d]

# {'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}

Phương pháp 3. Sử dụng từ điển hiểu

Điều kiện tiên quyết. Khả năng hiểu từ điển là một cách ngắn gọn và tiết kiệm bộ nhớ để tạo và khởi tạo từ điển trong một dòng mã Python. Nó bao gồm hai phần. cách diễn đạt và ngữ cảnh. Biểu thức xác định cách ánh xạ khóa thành giá trị. Bối cảnh lặp qua một lần lặp bằng cách sử dụng vòng lặp for một dòng và xác định cặp [khóa, giá trị] nào sẽ đưa vào từ điển mới

Tiếp cận. Sử dụng hàm

# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
4 với dấu phân cách “
# Input:
st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
# Output:
{'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}
5” để tách chuỗi đã cho thành danh sách các chuỗi con. Bạn phải sử dụng thêm phương thức split[] và dấu phân cách “. ” trên mọi chuỗi con và sử dụng khả năng hiểu từ điển để tạo ánh xạ từ các khóa [phần tử đầu tiên của chuỗi con] đến các giá trị [phần tử thứ hai của chuỗi con]. Việc phân tách thứ hai có thể được thực hiện một cách hiệu quả trong biểu thức

Mã số

st = "Python:Rossum,C:Ritchie,Java:Gosling,C++:Stroustrup"
li = st.split[","]
res = {sub.split[":"][0]: sub.split[":"][1] for sub in li}
print[res]

# {'Python': 'Rossum', 'C': 'Ritchie', 'Java': 'Gosling', 'C++': 'Stroustrup'}

Đọc liên quan.

Bài tập

Đây là một thử thách khác dành cho bạn dựa trên những gì bạn đã học được ở trên

Thách đấu. Bạn đã được cung cấp một chuỗi được phân tách bằng “-“. Tuy nhiên, chuỗi này không có cặp khóa-giá trị. Nó chỉ có các giá trị. Tách chuỗi và tạo các cặp khóa-giá trị sao cho các khóa là các số nguyên liên tiếp bắt đầu từ một. Như vậy, bạn sẽ có 4 khóa và 4 giá trị [giá trị là chuỗi con trong chuỗi đã cho]

# Given String
text = 'KBDNM-R8CD9-RK366-WFM3X-C7GXK'

# Expected Output:
{1: 'KBDNM', 2: 'R8CD9', 3: 'RK366', 4: 'WFM3X', 5: 'C7GXK'}

💡Gợi ý. con trăn. Chia chuỗi thành các biến

Tiếp cận. Ý tưởng ở đây là phân tách danh sách bằng cách sử dụng “-” làm dấu phân cách và sau đó tìm độ dài của danh sách kết quả được trả về bởi hàm tách. Sau đó, sử dụng độ dài này để tạo một danh sách khác chứa tất cả các khóa dưới dạng các mục bên trong nó. Điều này có thể được thực hiện với sự trợ giúp của một vòng lặp for đơn giản. Do đó, bạn sẽ có hai danh sách một cách hiệu quả – một danh sách lưu trữ các chuỗi/giá trị được phân tách và một danh sách khác lưu trữ các khóa

Sau đó, bạn có thể tạo một từ điển trong hai danh sách sao cho các khóa trong từ điển này sẽ là các mục của danh sách chứa các số nguyên và các giá trị trong từ điển này sẽ là các mục của danh sách chứa các chuỗi phân tách

Giải pháp

# Given String
text = 'KBDNM-R8CD9-RK366-WFM3X-C7GXK'
# splitting the string using - as a separator
res = text.split['-']
# Naming and storing variables and values
name = []
for i in range[1, len[res]+1]:
    name.append[i]
d = dict[zip[name, res]]
print[d]

# {1: 'KBDNM', 2: 'R8CD9', 3: 'RK366', 4: 'WFM3X', 5: 'C7GXK'}

Phần kết luận

tiếng hoan hô. Chúng tôi đã xem xét ba cách khác nhau để chia chuỗi thành khóa và giá trị. Tôi hy vọng tất cả các giải pháp được đề cập trong bài viết này đã giúp bạn. Hãy đăng ký và theo dõi các bài viết và giải pháp thú vị hơn trong tương lai. Mã hóa vui vẻ

Nhưng trước khi chúng ta tiếp tục, tôi rất vui được giới thiệu với bạn cuốn sách Python mới của tôi Python One-Liners [Amazon Link]

Nếu bạn thích một lớp lót, bạn sẽ YÊU cuốn sách. Nó sẽ dạy cho bạn mọi thứ cần biết về một dòng mã Python. Nhưng nó cũng là phần giới thiệu về khoa học máy tính, khoa học dữ liệu, máy học và thuật toán. Vũ trụ trong một dòng Python

Sách được phát hành năm 2020 với nhà xuất bản sách lập trình đẳng cấp thế giới NoStarch Press [San Francisco]

liên kết. https. //Không có tinh bột. com/pythononeliners

Shubham Sayon

Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking

Split[] có thể lấy hai đối số không?

phương thức split[] chấp nhận hai đối số . Đối số tùy chọn đầu tiên là dấu tách, chỉ định loại dấu tách sẽ sử dụng để tách chuỗi. Nếu đối số này không được cung cấp, thì giá trị mặc định là bất kỳ khoảng trắng nào, nghĩa là chuỗi sẽ tách ra bất cứ khi nào.

Làm cách nào để tách chuỗi thành từ điển trong Python?

Phương pháp 1. Sử dụng vòng lặp split[] + . Trong trường hợp này, các phần đã tách được lưu trữ trong danh sách tạm thời bằng cách sử dụng split[] và sau đó từ điển mới được tạo từ danh sách tạm thời.

Chủ Đề