Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Tôi có danh sách khá đơn giản:

example_list = [
    {'points': 400, 'gold': 2480},
    {'points': 100, 'gold': 610},
    {'points': 100, 'gold': 620},
    {'points': 100, 'gold': 620}
]

Làm thế nào tôi có thể tổng hợp tất cả các giá trị vàng? Tôi đang tìm kiếm oneliner đẹp.

Bây giờ tôi đang sử dụng mã này (nhưng nó không phải là giải pháp tốt nhất):

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]

hỏi ngày 27 tháng 7 năm 2012 lúc 17:21Jul 27, 2012 at 17:21

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Mateusz Jagiełłomateusz JagiełłoMateusz Jagiełło

6.61410 Huy hiệu vàng39 Huy hiệu bạc46 Huy hiệu đồng10 gold badges39 silver badges46 bronze badges

3

sum(item['gold'] for item in myList)

Đã trả lời ngày 27 tháng 7 năm 2012 lúc 17:22Jul 27, 2012 at 17:22

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

g.d.d.cg.d.d.cg.d.d.c

45.5K8 Huy hiệu vàng99 Huy hiệu bạc110 Huy hiệu Đồng8 gold badges99 silver badges110 bronze badges

0

Nếu bạn có ý thức về trí nhớ:

sum(item['gold'] for item in example_list)

Nếu bạn cực kỳ có ý thức về thời gian:

sum([item['gold'] for item in example_list])

Trong hầu hết các trường hợp chỉ cần sử dụng biểu thức máy phát, vì sự gia tăng hiệu suất chỉ đáng chú ý trên một dữ liệu rất lớn/đường dẫn mã rất nóng.

Xem câu trả lời này để giải thích lý do tại sao bạn nên tránh sử dụng MAP.

Xem câu trả lời này cho một số so sánh thời gian trong thế giới thực của danh sách hiểu và biểu thức tạo.

Đã trả lời ngày 27 tháng 7 năm 2012 lúc 19:16Jul 27, 2012 at 19:16

Ben Burnsben bị bỏngBen Burns

Phù bằng vàng 14,8K4 Huy hiệu bạc56 Huy hiệu đồng4 gold badges33 silver badges56 bronze badges

2

Nếu bạn thích

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
5, điều này cũng hoạt động:

 import operator
 total_gold = sum(map(operator.itemgetter('gold'),example_list))

Nhưng tôi nghĩ rằng trình tạo được đăng bởi G.D.D.C tốt hơn đáng kể. Câu trả lời này thực sự chỉ để chỉ ra sự tồn tại của

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
6.

Đã trả lời ngày 27 tháng 7 năm 2012 lúc 17:23Jul 27, 2012 at 17:23

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Mgilsonmgilsonmgilson

291K63 Huy hiệu vàng610 Huy hiệu bạc677 Huy hiệu Đồng63 gold badges610 silver badges677 bronze badges

3

from collections import Counter
from functools import reduce
from operator import add

sum_dict = reduce(add, (map(Counter, example_list)))
# Counter({'points': 700, 'gold': 4330})
total_gold = sum_dict['gold']

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Bruno Mello

4.0991 Huy hiệu vàng7 Huy hiệu bạc33 Huy hiệu đồng1 gold badge7 silver badges33 bronze badges

Đã trả lời ngày 24 tháng 2 lúc 0:58Feb 24 at 0:58

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

xmduhanxmduhanxmduhan

83011 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges

1

example_list = [
    {'points': 400, 'gold': 2480},
    {'points': 100, 'gold': 610},
    {'points': 100, 'gold': 620},
    {'points': 100, 'gold': 620}
]

result = np.sum([x['gold'] for x in example_list])


print(result)

đầu ra

 4330

Đã trả lời ngày 25 tháng 2 lúc 12:07Feb 25 at 12:07

Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Sư tử vàng vàngGolden Lion

3.2992 Huy hiệu vàng25 Huy hiệu bạc31 Huy hiệu Đồng2 gold badges25 silver badges31 bronze badges

1

Xây dựng vấn đề và tổng quan về giải pháp

Trong bài viết này, bạn sẽ học cách tổng hợp các giá trị từ điển trong Python.Sum Dictionary Values in Python.

Để làm cho nó vui hơn, chúng tôi có kịch bản chạy sau:

Là một freelancer Python, bạn muốn biết bạn đã kiếm được bao nhiêu tiền trong vài tháng qua. Dữ liệu này được lưu trữ trong một định dạng từ điển. Tổng số này có thể được tìm thấy bằng cách tổng hợp (kiểm đếm) các giá trị từ điển.

💬 Câu hỏi: Làm thế nào chúng ta sẽ viết mã Python để tổng hợp các giá trị từ điển trong Python?Question: How would we write Python code to sum dictionary values in Python?

Chúng tôi có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau:

  • Phương pháp 1: Sử dụng
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 và
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    8
    : Use
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 and
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    8
  • Phương pháp 2: Sử dụng
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 và biểu thức máy phát
    : Use
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 and a Generator Expression
  • Phương pháp 3: Sử dụng
    sum(item['gold'] for item in myList)
    
    0 và Lambda
    : Use
    sum(item['gold'] for item in myList)
    
    0 and a Lambda
  • Phương pháp 4: Sử dụng
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 và
    sum(item['gold'] for item in myList)
    
    2
    : Use
    total_gold = 0
    for item in example_list:
        total_gold += example_list["gold"]
    
    7 and
    sum(item['gold'] for item in myList)
    
    2
  • Phương pháp 5: Sử dụng vòng lặp và tổng hợp
    sum(item['gold'] for item in myList)
    
    3 đơn giản
    : Use a simple
    sum(item['gold'] for item in myList)
    
    3 loop and aggregate

Phương pháp 1: Sử dụng sum () và dict.values ​​()

Bạn có thể sử dụng các hàm

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
7 và
total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
8 để tổng hợp tất cả các giá trị của từ điển Python với biểu thức
sum(item['gold'] for item in myList)
6.

Ở đây, cách thức này áp dụng cho kịch bản ví dụ của chúng tôi:

wages = {'01': 910.56, '02': 1298.68, '03': 1433.99, '04': 1050.14, '05': 877.67}
total = sum(wages.values())
print('Total Wages: ${0:,.2f}'.format(total))

Mã này tuyên bố một từ điển,

sum(item['gold'] for item in myList)
7 chứa năm (5) khóa: các cặp giá trị của thu nhập hàng tháng.

Tùy chọn 1 ở trên các giá trị được trích xuất và lưu vào

sum(item['gold'] for item in myList)
8. Sau đó, sử dụng
sum(item['gold'] for item in myList)
9, đầu ra được sửa đổi để hiển thị dấu hiệu đô la (
sum(item['gold'] for item in example_list)
0), dấu phẩy (nếu cần) và hạn chế đầu ra ở hai (2) vị trí thập phân.
above tallies the extracted values and saves to
sum(item['gold'] for item in myList)
8. Then using
sum(item['gold'] for item in myList)
9, the output is modified to display a Dollar sign (
sum(item['gold'] for item in example_list)
0), a comma (if needed), and restrict the output to two (2) decimal places.

Tổng số tiền lương: $ 5,571,04

HOẶC

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
0

Tùy chọn 2 ở trên các giá trị được trích xuất, làm tròn kết quả đến hai (2) vị trí thập phân và tiết kiệm cho

sum(item['gold'] for item in myList)
8. Kết quả là đầu ra cho thiết bị đầu cuối như là. above tallies the extracted values, rounds the result to two (2) decimal places, and saves to
sum(item['gold'] for item in myList)
8. The result is output to the terminal as is.

5571.04

Phương thức từ điển python () Phương thức


Phương pháp 2: Sử dụng biểu thức Sum () và Trình tạo

Bạn có thể kết hợp hàm

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
7 tích hợp với biểu thức máy phát đơn giản để tổng hợp tất cả các giá trị trong từ điển Python với biểu thức
sum(item['gold'] for item in example_list)
3.

Ở đây, ví dụ:

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
1

Mã này tuyên bố một từ điển,

sum(item['gold'] for item in myList)
7 chứa năm (5) khóa: các cặp giá trị của thu nhập hàng tháng.

Tùy chọn 1 ở trên các giá trị được trích xuất và lưu vào

sum(item['gold'] for item in myList)
8. Sau đó, sử dụng
sum(item['gold'] for item in myList)
9, đầu ra được sửa đổi để hiển thị dấu hiệu đô la (
sum(item['gold'] for item in example_list)
0), dấu phẩy (nếu cần) và hạn chế đầu ra ở hai (2) vị trí thập phân.

Tổng số tiền lương: $ 5,571,04

Tổng số tiền lương: $ 5,571,04


HOẶC

Tùy chọn 2 ở trên các giá trị được trích xuất, làm tròn kết quả đến hai (2) vị trí thập phân và tiết kiệm cho

sum(item['gold'] for item in myList)
8. Kết quả là đầu ra cho thiết bị đầu cuối như là.

Phương thức từ điển python () Phương thức

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
2

Phương pháp 2: Sử dụng biểu thức Sum () và Trình tạo

Bạn có thể kết hợp hàm

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
7 tích hợp với biểu thức máy phát đơn giản để tổng hợp tất cả các giá trị trong từ điển Python với biểu thức
sum(item['gold'] for item in example_list)
3.

Ở đây, ví dụ:

5571.04

Vòng lặp

sum(item['gold'] for item in myList)
3 một dòng được sử dụng để điều hướng từng mục từ điển (giá trị) và kiểm đếm các mục. Kết quả tiết kiệm đến
sum(item['gold'] for item in myList)
8.


Sau đó, sum(item['gold'] for item in myList) 9 được sử dụng để sửa đổi đầu ra để hiển thị dấu hiệu đô la (sum(item['gold'] for item in example_list) 0), dấu phẩy (nếu cần) và hạn chế đầu ra ở hai (2) vị trí thập phân.

Phương pháp 3: Sử dụng Lambda

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
3

Phương pháp 2: Sử dụng biểu thức Sum () và Trình tạo

Bạn có thể kết hợp hàm

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
7 tích hợp với biểu thức máy phát đơn giản để tổng hợp tất cả các giá trị trong từ điển Python với biểu thức
sum(item['gold'] for item in example_list)
3.

Ở đây, ví dụ:

Ở đây, ví dụ:

5571.04

Vòng lặp sum(item['gold'] for item in myList) 3 một dòng được sử dụng để điều hướng từng mục từ điển (giá trị) và kiểm đếm các mục. Kết quả tiết kiệm đến sum(item['gold'] for item in myList) 8.

Sau đó,

sum(item['gold'] for item in myList)
9 được sử dụng để sửa đổi đầu ra để hiển thị dấu hiệu đô la (
sum(item['gold'] for item in example_list)
0), dấu phẩy (nếu cần) và hạn chế đầu ra ở hai (2) vị trí thập phân.

Phương pháp 3: Sử dụng Lambda

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
4

Một cách khác để tổng hợp các giá trị từ điển Python là sử dụng phương pháp

sum(item['gold'] for item in myList)
0 kết hợp với hàm LambDA trong biểu thức
sum([item['gold'] for item in example_list])
0.


Ở đây, những gì trông giống như trong kịch bản ví dụ của chúng tôi:

Đầu tiên, mã này tuyên bố một từ điển,

sum(item['gold'] for item in myList)
7 chứa năm (5) khóa: các cặp giá trị của thu nhập hàng tháng.

Sau đó, hàm

sum(item['gold'] for item in myList)
0 được sử dụng với Lambda để kiểm đếm tiền lương. Kết quả này tiết kiệm cho
sum(item['gold'] for item in myList)
8 và là đầu ra cho thiết bị đầu cuối như vậy.


Hướng dẫn how do i sum a list of a dictionary in python? - làm cách nào để tổng hợp danh sách từ điển trong python?

Đầu ra

Hãy chơi Finxter - Chức năng Lambda trong Python

Phương pháp 4: Sử dụng máy phát điện
Corporate Trainer (staff of 30+)
Programming Instructor
Implementation Specialist for Navision and Microsoft CRM
Senior PHP Coder