Hướng dẫn apply function to all dictionary values python - áp dụng hàm cho tất cả các giá trị từ điển python

Tôi có từ điển trông giống như

d= {(1, 8): 94.825000000000003, (2, 8): 4.333}

Tôi đang cố gắng áp dụng một hàm để làm tròn tất cả các giá trị.

Tôi không muốn tạo lại từ điển.

newD= {}
for x,y in d.iteritems():
   newD+= {x:round(y)}

Có bất kỳ đường Pythonic nào để áp dụng hàm

newD= {}
for x,y in d.iteritems():
   newD+= {x:round(y)}
3 trên tất cả các giá trị?

Hỏi ngày 17 tháng 12 năm 2014 lúc 3:49Dec 17, 2014 at 3:49

Hướng dẫn apply function to all dictionary values python - áp dụng hàm cho tất cả các giá trị từ điển python

user3378649user3378649user3378649

4,84413 Huy hiệu vàng 50 Huy hiệu bạc75 Huy hiệu Đồng13 gold badges50 silver badges75 bronze badges

2

Đây là một chút phức tạp hơn, nhưng bạn đã yêu cầu một 'con đường pythonic';)

newD = {k:round(v) for k, v in d.items()}

Tuy nhiên, sự hiểu biết từ điển này sẽ chỉ hoạt động trên 2.7+. Nếu sử dụng phiên bản Python cũ hơn, hãy thử cách này phức tạp hơn:

newD = dict(zip(d.keys(), [round(v) for v in d.values()]))

Hãy để tôi giải nén điều này một chút:

  • Chúng tôi đang bắt đầu bằng cách chỉ định lại đối tượng từ điển mới (
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    4) trở lại từ điển mới theo yêu cầu (mặc dù bạn có thể dễ dàng gán nó cho cùng một tên)
  • Bên ngoài
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    5 đảm bảo kết quả cuối cùng là đối tượng từ điển
  • newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    6 Trả về một danh sách các bộ dữ
  • Trình tự đối số đầu tiên được đưa ra cho
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    6 là các khóa từ điển (
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    8)
  • Trình tự đối số thứ hai được trao cho
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    6 là các giá trị tròn sau khi hiểu danh sách
  • Danh sách hiểu làm tròn từng giá trị trong các giá trị từ điển và trả về danh sách các giá trị tròn

Đã trả lời ngày 17 tháng 12 năm 2014 lúc 4:24Dec 17, 2014 at 4:24

Hướng dẫn apply function to all dictionary values python - áp dụng hàm cho tất cả các giá trị từ điển python

4

Bạn có thể thử một cái gì đó như thế này:

for k, v in d.iteritems():
    d[k] = round(v)

Nó sẽ làm một vòng tròn của tất cả các mục trong từ điển. Trong ví dụ cụ thể này, nó sẽ hoạt động hoàn hảo, tuy nhiên hãy cẩn thận - tất cả các cảnh báo thông thường về việc sử dụng chức năng tròn áp dụng.

Đã trả lời ngày 17 tháng 12 năm 2014 lúc 3:59Dec 17, 2014 at 3:59

Vikram Saranvikram SaranVikram Saran

1.1138 Huy hiệu bạc17 Huy hiệu đồng8 silver badges17 bronze badges

7

Bài viết này cho bạn thấy cách áp dụng một hàm đã cho cho từng yếu tố của từ điển Python.

Cách pythonic nhất để áp dụng một hàm cho từng yếu tố của Python

newD = {k:round(v) for k, v in d.items()}
0 là kết hợp tính năng hiểu từ điển và phương pháp
newD = {k:round(v) for k, v in d.items()}
1 như vậy:

{k:f(v) for k,v in dict.items()}

Lưu ý: Tất cả các giải pháp được cung cấp dưới đây đã được xác minh trong Python 3.9.5.: All the solutions provided below have been verified in Python 3.9.5.

Xây dựng vấn đề

Hãy tưởng tượng từ điển sau đây của các giá trị tuổi:

my_dict = {'alice': 18, 'bob': 20, 'carl': 25}

Làm thế nào để áp dụng một hàm f (x) = x + 1 để tăng mỗi giá trị bằng một giá trị trong ví dụ của chúng tôi tăng độ tuổi khi một năm trôi qua?f(x) = x + 1 to increment each value by one—in our example increment the age as a year goes by?

{'alice': 19, 'bob': 21, 'carl': 26}

Tôi sẽ bắt đầu với cách tiếp cận ngây thơ của người Viking trước tiên và cho bạn thấy các giải pháp pythonic hơn sau đó. Vậy hãy bắt đầu!

Phương pháp 1: Đơn giản cho vòng lặp

Vấn đề trên, giống như nhiều người khác, có một giải pháp khá đơn giản trong Python.

Một giải pháp đơn giản sử dụng vòng lặp vanilla Python để lặp lại trên mỗi ________ 22: ________ 23 cặp từ điển gốc. Trong phần thân vòng, sau đó bạn áp dụng hàm cho từng giá trị và gán kết quả trở lại khóa.

Giả sử chúng ta có chức năng sau mà chúng ta muốn áp dụng cho từng phần tử trong từ điển:

________số 8

Tại đây, cách bạn có thể áp dụng chức năng này cho từng giá trị từ điển theo một vòng lặp đơn giản:

my_dict = {'alice': 18, 'bob': 20, 'carl': 25}

for k,v in my_dict.items():
    my_dict[k] = f(v)

print(my_dict)
# {'alice': 19, 'bob': 21, 'carl': 26}

Tuy nhiên, đây không phải là cách pythonic nhất để tiếp cận vấn đề này.

Phương pháp 2: Hiểu từ điển

Cách pythonic nhất để áp dụng hàm

newD = {k:round(v) for k, v in d.items()}
4 cho mỗi giá trị của từ điển là sử dụng độ hiểu từ điển và
newD = {k:round(v) for k, v in d.items()}
1 để lặp lại trên mỗi cặp
newD = {k:round(v) for k, v in d.items()}
6 của một từ điển nhất định.

{k:f(v) for k,v in dict.items()}

Hãy nói rằng chúng tôi sử dụng hàm

newD = {k:round(v) for k, v in d.items()}
4 được xác định trong phần trước. Tại đây, cách áp dụng chức năng
newD = {k:round(v) for k, v in d.items()}
4 cho từng giá trị của từ điển
newD = {k:round(v) for k, v in d.items()}
9:

newD= {}
for x,y in d.iteritems():
   newD+= {x:round(y)}
1

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: biểu thức và bối cảnh.expression and context.

  • Biểu thức xác định cách ánh xạ các phím đến các giá trị.expression defines how to map keys to values.
  • Các vòng lặp bối cảnh trên một điều đáng tin cậy bằng cách sử dụng một dòng cho vòng lặp và xác định các cặp
    newD = {k:round(v) for k, v in d.items()}
    
    6 nào để đưa vào từ điển mới.context loops over an iterable using a single-line for loop and defines which
    newD = {k:round(v) for k, v in d.items()}
    
    6 pairs to include in the new dictionary.

Để tìm hiểu thêm về tính năng tuyệt vời của sự hiểu biết từ điển, vui lòng xem video giải thích sau:

Từ điển Python Hiểu - Hướng dẫn một lớp học mạnh mẽ

Và để tìm hiểu thêm về phương pháp

newD = {k:round(v) for k, v in d.items()}
1, vui lòng xem video hướng dẫn sau:

Phương thức Python dict.items ()

Hiệu suất Lưu ý: So với đơn giản cho vòng lặp, cách tiếp cận này thực sự tạo ra một đối tượng từ điển mới ít hiệu quả bộ nhớ. Đối với các từ điển lớn, tôi đã khuyên bạn nên sử dụng đơn giản cho vòng lặp và cập nhật các giá trị từ điển từng cái một.Performance Note: Compared to the simple for loop, this approach actually creates a new dictionary object which is less memory efficient. For large dictionaries, I’d recommend you use the simple for loop and update the dictionary values one by one.

Phương pháp 3: Hàm bản đồ ()

Để hiểu được, tôi đã muốn đề xuất một giải pháp thay thế để giải quyết vấn đề này, tuy nhiên, don lồng sử dụng nó! Phương pháp trước đây là Pythonic hơn nhiều và dễ đọc hơn!

Mọi thứ đều giống như trước ngoại trừ dòng được tô sáng:

  • newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
    
    2
newD= {}
for x,y in d.iteritems():
   newD+= {x:round(y)}
2

Hãy cùng đi sâu vào tất cả các khái niệm được sử dụng trong giải pháp một lớp lót:

  • Bạn sử dụng chức năng
    newD= {}
    for x,y in d.iteritems():
       newD+= {x:round(y)}
    
    5 để tạo từ điển mới.
  • Bạn có thể kết hợp các khóa và giá trị mới (sau khi áp dụng hàm
    newD = {k:round(v) for k, v in d.items()}
    
    4) vào danh sách các bộ dữ liệu
    newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
    
    5.
  • Bạn sử dụng phương pháp
    newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
    
    6 để có được tất cả các khóa từ điển từ từ điển ban đầu.
  • Bạn sử dụng phương thức
    newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
    
    7 để có được các giá trị từ điển từ từ điển ban đầu.
  • Bạn sử dụng hàm
    newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
    
    8 để áp dụng hàm
    newD = {k:round(v) for k, v in d.items()}
    
    4 cho mỗi giá trị trong từ điển.

Do nhiều khái niệm được bao gồm trong một lớp lót này, tôi nghĩ rằng lợi ích giáo dục của việc nghiên cứu một lớp học quá mức cho sự nhầm lẫn nhẹ mà bạn có thể trải nghiệm khi đọc nó lần đầu tiên. 😉

Nếu bạn thích các lớp lót được trình bày trong bài viết này, bạn sẽ yêu thích cuốn sách của tôi về Python One-Liners:

Cuốn sách Python One-Liners: Master The Single Line đầu tiên!

Các lập trình viên Python sẽ cải thiện các kỹ năng khoa học máy tính của họ với các lớp lót hữu ích này.

Hướng dẫn apply function to all dictionary values python - áp dụng hàm cho tất cả các giá trị từ điển python

Python One-Linerswill dạy bạn cách đọc và viết một bộ bài viết: Các câu nói ngắn gọn về chức năng hữu ích được đóng gói thành một dòng mã. Bạn sẽ học cách giải nén một cách có hệ thống và hiểu bất kỳ dòng mã Python nào và viết python được nén mạnh mẽ, mạnh mẽ như một chuyên gia.concise statements of useful functionality packed into a single line of code. You’ll learn how to systematically unpack and understand any line of Python code, and write eloquent, powerfully compressed Python like an expert.

Cuốn sách năm chương bao gồm (1) mẹo và thủ thuật, (2) biểu thức thông thường, (3) học máy, (4) chủ đề khoa học dữ liệu cốt lõi và (5) thuật toán hữu ích.

Giải thích chi tiết về một lớp lót giới thiệu các khái niệm khoa học máy tính quan trọng và tăng cường kỹ năng mã hóa và phân tích của bạn. Bạn có thể tìm hiểu về các tính năng Python nâng cao như hiểu danh sách, cắt lát, chức năng Lambda, biểu thức thông thường, bản đồ và giảm các chức năng và bài tập cắt lát.key computer science concepts and boost your coding and analytical skills. You’ll learn about advanced Python features such as list comprehension, slicing, lambda functions, regular expressions, map and reduce functions, and slice assignments.

Bạn cũng sẽ học cách:

  • Tận dụng các cấu trúc dữ liệu để giải quyết các vấn đề trong thế giới thực, như sử dụng lập chỉ mục Boolean để tìm các thành phố có ô nhiễm trên trung bìnhsolve real-world problems, like using Boolean indexing to find cities with above-average pollution
  • Sử dụng những điều cơ bản của Numpy như mảng, hình dạng, trục, loại, phát sóng, lập chỉ mục nâng cao, cắt lát, sắp xếp, tìm kiếm, tổng hợp và thống kêNumPy basics such as array, shape, axis, type, broadcasting, advanced indexing, slicing, sorting, searching, aggregating, and statistics
  • Tính toán số liệu thống kê cơ bản của các mảng dữ liệu đa chiều và các thuật toán có nghĩa K để học tập không giám sátstatistics of multidimensional data arrays and the K-Means algorithms for unsupervised learning
  • Tạo các biểu thức chính quy nâng cao hơn bằng cách sử dụng nhóm nhóm và các nhóm được đặt tên, Lookahead tiêu cực, ký tự thoát, không gian trắng, bộ ký tự (và bộ ký tự tiêu cực) và các toán tử tham lam/nongreedyadvanced regular expressions using grouping and named groups, negative lookaheads, escaped characters, whitespaces, character sets (and negative characters sets), and greedy/nongreedy operators
  • Hiểu được một loạt các chủ đề khoa học máy tính, bao gồm các phương pháp, palindromes, supersets, hoán vị, giai thừa, số nguyên tố, số fibonacci, obfuscation, tìm kiếm và phân loại thuật toáncomputer science topics, including anagrams, palindromes, supersets, permutations, factorials, prime numbers, Fibonacci numbers, obfuscation, searching, and algorithmic sorting

Đến cuối cuốn sách, bạn sẽ biết cách viết Python ở tinh tế nhất và tạo ra những tác phẩm nghệ thuật Python Python ngắn gọn, đẹp đẽ chỉ trong một dòng.write Python at its most refined, and create concise, beautiful pieces of “Python art” in merely a single line.

Nhận Python Oneer của bạn trên Amazon !!

Hướng dẫn apply function to all dictionary values python - áp dụng hàm cho tất cả các giá trị từ điển python

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

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

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

Làm thế nào để bạn áp dụng một hàm cho tất cả các giá trị trong từ điển?

Sử dụng khả năng hiểu từ điển để ánh xạ một hàm trên tất cả các giá trị trong từ điển. Sử dụng cú pháp {key: f (giá trị) cho khóa, giá trị trong dict.items ()} để áp dụng hàm f cho mỗi giá trị trong Dictionary Dict.Use the syntax {key: f(value) for key, value in dict. items()} to apply the function f to each value in the dictionary dict .

Bạn có thể đặt các chức năng trong một python từ điển không?

Kỹ thuật này là khi bạn có một từ điển Python và một chức năng mà bạn dự định sử dụng trên nó.Bạn chèn một phần tử bổ sung vào dict, có giá trị là tên của hàm.Khi bạn đã sẵn sàng gọi chức năng, bạn sẽ đưa ra cuộc gọi một cách gián tiếp bằng cách tham khảo phần tử Dict, chứ không phải chức năng theo tên.You insert an extra element into the dict, whose value is the name of the function. When you're ready to call the function you issue the call indirectly by referring to the dict element, not the function by name.

Việc sử dụng tất cả () trong từ điển là gì?

Lưu ý: Khi được sử dụng trên từ điển, hàm tất cả () kiểm tra xem tất cả các khóa là đúng chứ không phải các giá trị.checks if all the keys are true, not the values.

Việc sử dụng tất cả () trong từ điển trong Python là gì?

Hàm python all () trả về đúng nếu tất cả các yếu tố của một số không thể sử dụng được (danh sách, từ điển, tuple, set, v.v.) là đúng nếu không nó trả về sai.Nó cũng trả về đúng nếu đối tượng có thể trống.returns true if all the elements of a given iterable (List, Dictionary, Tuple, set, etc.) are True otherwise it returns False. It also returns True if the iterable object is empty.