Tìm chuỗi trong từ điển python

Để kiểm tra xem một khóa có tồn tại trong từ điển Python hay không, bạn có thể sử dụng toán tử

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
9 để tìm kiếm trong các khóa từ điển như thế này

pets = {'cats': 1, 'dogs': 2, 'fish': 3}

if 'dogs' in pets:
    print['Dogs found!']

# Dogs found!

cân nhắc hiệu suất

Từ điển có thể là một cấu trúc dữ liệu thuận tiện để đếm số lần xuất hiện của các mục. Ví dụ: bạn muốn đếm số lượng từ trong một nội dung văn bản

Mặc dù có vẻ trực quan khi sử dụng mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
0 như sau để đếm các mục

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1

một số người đã chỉ ra rằng mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
1 như mẫu bên dưới có thể mang lại hiệu suất tốt hơn. Tuy nhiên, thực tế có những tình huống khác nhau mà mỗi mẫu đều vượt trội hơn.

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1

Vậy khi nào bạn nên sử dụng mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
1 thay vì mẫu
text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
0? . Có nghĩa là nếu ít hơn 22% tổng số từ được tính trong phần nội dung văn bản là duy nhất thì mẫu
text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
1 sẽ nhanh hơn

Mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
1 sẽ nhanh hơn khi bạn có ít ngoại lệ sẽ được đưa ra, nói cách khác, có rất nhiều từ hoặc khóa trùng lặp mà bạn đang đếm. Vì vậy, phương pháp này sẽ phù hợp khi bạn đang đếm một danh sách chứa một tập hợp các từ được lặp lại thường xuyên mà không có nhiều từ có thể khác chỉ có thể được đếm một lần

Tuy nhiên, nếu các từ hoặc khóa mà bạn đang đếm hầu hết là duy nhất, thì chi phí đưa ra một ngoại lệ mỗi lần sẽ khiến mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
1 chậm hơn mẫu
text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
0

Để so sánh thực tế hơn, thông thường 50% - 62% từ trong các bài báo [thử nghiệm trên The Economist, The Guardian và BBC News] là duy nhất, điều này làm cho mẫu

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1
0 nhanh hơn để đếm các phần văn bản đa dạng hơn

Dưới đây là một số kết quả điểm chuẩn từ bài kiểm tra

# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22

Đối với những người quan tâm, bạn có thể xem lại mã nguồn đã được sử dụng cho các thử nghiệm này

Tham gia Mạng lưới nhà phát triển có khả năng

Nếu bạn thích bài đăng này, bạn có thể quan tâm đến mạng lưới nhà phát triển Able, một nơi mới để các nhà phát triển viết blog và tìm việc làm

Trên mỗi lần lặp, chúng tôi kiểm tra xem chuỗi đã chỉ định có chứa trong giá trị [danh sách] của lần lặp hiện tại hay không bằng cách sử dụng toán tử

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
9

Các bài kiểm tra tư cách thành viên. Ví dụ:

# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
0 đánh giá thành
# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
1 nếu
# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
2 là thành viên của
# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
3, nếu không, nó đánh giá thành
# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
4

Nếu bạn không cần lấy khóa tương ứng, hãy lặp lại các giá trị của từ điển

Phương thức trả về một chế độ xem mới về các giá trị của từ điển

Để kiểm tra xem có bất kỳ giá trị từ điển nào chứa chuỗi con không

  1. Sử dụng vòng lặp
    # dictionary.txt [one word on each line]
    if/else: 0.1533535360
    try/except: 0.2706389330
    total words: 370103
    unique words: 370103
    ratio: 1.00
    
    # article.txt [article from The Economist]
    if/else: 0.0002584480
    try/catch: 0.0002763390
    total words: 616
    unique words: 374
    ratio: 0.61
    
    # balanced.txt [text with 22% unique words]
    if/else: 0.0002434520
    try/catch: 0.0002434670
    total words: 895
    unique words: 194
    ratio: 0.22
    
    5 để lặp lại các mục của từ điển
  2. Sử dụng vòng lặp
    # dictionary.txt [one word on each line]
    if/else: 0.1533535360
    try/except: 0.2706389330
    total words: 370103
    unique words: 370103
    ratio: 1.00
    
    # article.txt [article from The Economist]
    if/else: 0.0002584480
    try/catch: 0.0002763390
    total words: 616
    unique words: 374
    ratio: 0.61
    
    # balanced.txt [text with 22% unique words]
    if/else: 0.0002434520
    try/catch: 0.0002434670
    total words: 895
    unique words: 194
    ratio: 0.22
    
    5 để lặp lại từng giá trị
  3. Kiểm tra xem chuỗi con có chứa trong mỗi mục không

Vòng lặp

# dictionary.txt [one word on each line]
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt [article from The Economist]
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt [text with 22% unique words]
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22
5 đầu tiên lặp qua các mục của từ điển

Vòng lặp for thứ hai lặp qua từng giá trị [danh sách] trong từ điển

Trên mỗi lần lặp, chúng tôi sử dụng toán tử

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
9 để kiểm tra xem chuỗi con có được chứa trong mỗi mục không

💬 Thử thách. Đưa ra một từ điển với các phím chuỗi. Lấy khoá xâu có số kí tự lớn nhất là i. e. , chuỗi dài nhất

Một biến thể của bài toán này là tính độ dài của chuỗi dài nhất — Tôi cũng sẽ cung cấp cho bạn một giải pháp nhanh chóng và dễ dàng cho bài toán này. Nhưng trước tiên, chúng ta hãy xem một ví dụ tiếp theo, phải không?

Giả sử, bạn có một từ điển với các phím chuỗi

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

Kết quả mong muốn. Có hai biến thể của thử thách này

  1. Lấy chuỗi dài nhất, tôi. e. ,
    # dictionary.txt [one word on each line]
    if/else: 0.1533535360
    try/except: 0.2706389330
    total words: 370103
    unique words: 370103
    ratio: 1.00
    
    # article.txt [article from The Economist]
    if/else: 0.0002584480
    try/catch: 0.0002763390
    total words: 616
    unique words: 374
    ratio: 0.61
    
    # balanced.txt [text with 22% unique words]
    if/else: 0.0002434520
    try/catch: 0.0002434670
    total words: 895
    unique words: 194
    ratio: 0.22
    
    9 hoặc
    d = {'alice': 18,
         'bob': 23,
         'carl': 35,
         'david': 42}
    0
  2. Lấy độ dài của chuỗi dài nhất, i. e. ,
    d = {'alice': 18,
         'bob': 23,
         'carl': 35,
         'david': 42}
    1

Tiếp theo, hãy tìm hiểu cách Pythonic nhất để giải quyết thử thách này

Phương pháp 1. Lấy chuỗi dài nhất trong Dict Keys

Để lấy khóa chuỗi dài nhất của từ điển, hãy gọi

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}
2. Bạn chuyển từ điển làm đối số đầu tiên. Python sẽ tự động truy xuất các khóa từ từ điển và bỏ qua các giá trị từ điển. Sau đó chuyển
d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
0 làm đối số thứ hai để so sánh độ dài của chuỗi và tránh so sánh chuỗi từ điển tiêu chuẩn

Đây là ví dụ

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice

💡 Đối số chính của hàm

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
1 cho phép bạn xác định lại “tối đa” nghĩa là gì. Trong ví dụ của chúng tôi, tối đa có nghĩa là chuỗi "dài nhất" chứ không phải chuỗi "lớn nhất về mặt từ điển"

Không có nó, hàm

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
1 trong danh sách chuỗi sẽ trả về chuỗi tối đa về mặt từ điển, i. e. , cái đến cuối cùng trong bảng chữ cái

>>> max[['aaaaaaaa', 'z']]
'z'

Bạn có thể tìm hiểu thêm về đối số chính của hàm

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
3 trong hướng dẫn blog chi tiết của chúng tôi

👉 Hướng dẫn đề xuất. Nhận khóa có giá trị tối đa trong từ điển Python

Phương pháp 2. Lấy độ dài của chuỗi dài nhất trong Dict Keys

Để lấy độ dài của chuỗi dài nhất trong từ điển, trước tiên hãy tìm chuỗi dài nhất bằng cách sử dụng

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}
2 và chuyển chuỗi kết quả vào hàm
d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
5

Đây là ví dụ

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
2

Phương pháp 3. Lấy chuỗi dài nhất từ ​​các giá trị Dict

Để lấy chuỗi dài nhất từ ​​tất cả các giá trị từ điển, hãy gọi

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
6. Bạn chuyển các giá trị từ điển làm đối số đầu tiên. Sau đó chuyển
d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
0 làm đối số thứ hai để so sánh độ dài của chuỗi và tránh so sánh chuỗi từ điển tiêu chuẩn

Đây là ví dụ

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
5

Phương pháp 4. Brute-Force Pure Python

Khi tôi mới bắt đầu, tôi luôn tìm kiếm giải pháp mà tôi hiểu rõ nhất. Tôi không đề xuất giải pháp sau đây, nó quá dài—nhưng ít nhất nó cũng dễ hiểu và bạn chỉ nên đưa mã vào dự án của mình khi bạn hiểu

Bạn có thể tìm chuỗi dài nhất từ ​​các khóa từ điển bằng cách so sánh thủ công tất cả các chuỗi trong vòng lặp for, theo dõi chuỗi dài nhất bằng cách sử dụng hàm

d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
8 và toán tử lớn hơn
d = {'alice': 18,
     'bob': 23,
     'carl': 35,
     'david': 42}

print[max[d, key=len]]
# alice
9

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
8

Đoạn mã này có lẽ dễ hiểu nhất đối với các lập trình viên đến từ các ngôn ngữ lập trình khác như C++ hoặc Java. Tuy nhiên, một lập trình viên Python lành nghề sẽ không bao giờ viết những thứ như thế này

👉 Hướng dẫn đề xuất. Ngôn ngữ lập trình có lợi nhất là gì?

Lập Trình Hài Hước

💡 Lập trình là 10% khoa học, 20% sự khéo léo và 70% để sự khéo léo làm việc với khoa học

~~~

  • Câu hỏi. Tại sao các lập trình viên Java đeo kính?
  • Câu trả lời. Bởi vì họ không thể C#…

Vui lòng xem bài viết trên blog của chúng tôi với nhiều câu chuyện cười về mã hóa hơn. 😉

👉 Hướng dẫn liên quan. Cách lấy chuỗi ngắn nhất từ ​​​​từ điển Python?

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Làm cách nào để lấy một chuỗi từ từ điển Python?

Bạn có thể dễ dàng chuyển đổi từ điển Python thành chuỗi bằng cách sử dụng hàm str[] . Hàm str[] lấy một đối tượng [vì mọi thứ trong Python đều là đối tượng] làm tham số đầu vào và trả về một biến thể chuỗi của đối tượng đó. Lưu ý rằng nó không thực hiện bất kỳ thay đổi nào trong từ điển mà trả về một biến thể chuỗi.

Làm cách nào để kiểm tra xem một chuỗi có khớp với một khóa trong từ điển Python không?

Phương thức has_key[] là một phương thức tích hợp sẵn trong Python, trả về true nếu dict chứa khóa đã cho và trả về false .

Làm cách nào để tìm từ trong từ điển Python?

Để đơn giản kiểm tra xem một khóa có tồn tại trong từ điển Python hay không, bạn có thể sử dụng toán tử in để tìm kiếm trong các khóa từ điển như thế này. vật nuôi = {'mèo'. 1, 'chó'. 2, 'cá'. 3} nếu 'chó' trong vật nuôi. print['Đã tìm thấy chó. '] # Chó được tìm thấy. Từ điển có thể là một cấu trúc dữ liệu thuận tiện để đếm số lần xuất hiện của các mục.

Có == cho dict trong Python không?

Theo tài liệu python, bạn thực sự có thể sử dụng toán tử == trên từ điển .

Chủ Đề