Hướng dẫn sum specific values in dictionary python - tính tổng các giá trị cụ thể trong từ điển python

dict = {'A': 71.07884,
    'B': 110
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)

Tôi có một dictorary dictory và một tên chuỗi. Bây giờ tôi muốn tổng hợp các giá trị của dict bằng các ký tự của tên chuỗi.

Với giải pháp của tôi, tôi chỉ nhận được các giá trị 71.07884, 110, 103.14484 nhưng làm thế nào tôi có thể tổng hợp các giá trị này.

Nếu tôi thử in (sum (giá trị)) Tôi nhận được điều này: typeError: đối tượng 'float' không thể hiểu được.

Tôi là người mới ở Python :)

Hướng dẫn sum specific values in dictionary python - tính tổng các giá trị cụ thể trong từ điển python

Hỏi ngày 19 tháng 10 năm 2018 lúc 9:08Oct 19, 2018 at 9:08

Hướng dẫn sum specific values in dictionary python - tính tổng các giá trị cụ thể trong từ điển python

Bạn sẽ nhận được lỗi đó vì

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
2 thay đổi theo trình lặp của nó. Đặt hàng để tìm tổng bạn cần lưu trữ và thêm các giá trị vào một biến khác và sau đó gọi
name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 hoặc bạn có thể thêm nó vào một biến mới.

Những gì

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 làm là lấy một danh sách và lặp lại thông qua nó. Trong mã của bạn những gì nó đang làm là chuyển giá trị hiện tại trong vòng lặp chỉ vì vậy 1 giá trị.

Ví dụ: Lưu ý (có nhiều cách để làm điều này.)

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 

Đã trả lời ngày 19 tháng 10 năm 2018 lúc 9:14Oct 19, 2018 at 9:14

Bạn có thể làm theo cách đó - khởi tạo một danh sách trống trước và sau đó mỗi khi bạn nhận được giá trị trong vòng lặp,

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
5 nó vào danh sách. Bạn sẽ nhận được một danh sách
name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
6, sau đó bạn có thể tổng hợp.

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)

Output:

sum(values)
Out[6]: 284.22368

Đã trả lời ngày 19 tháng 10 năm 2018 lúc 9:11Oct 19, 2018 at 9:11

PiotrekpiotrekPiotrek

1.3508 huy hiệu bạc15 huy hiệu đồng8 silver badges15 bronze badges

Bạn có thể làm điều đó như thế này:

mydict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

sum(value for key, value in mydict.items() if key in name)

# 284.22368

Lưu ý rằng tôi đã đổi tên từ điển của bạn thành

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
7, vì
name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
8 là hàm python tích hợp, mà bạn không nên sử dụng làm tên biến.

Đã trả lời ngày 19 tháng 10 năm 2018 lúc 9:11Oct 19, 2018 at 9:11

Hướng dẫn sum specific values in dictionary python - tính tổng các giá trị cụ thể trong từ điển python

PiotrekpiotrekThierry Lathuille

1.3508 huy hiệu bạc15 huy hiệu đồng10 gold badges41 silver badges47 bronze badges

Bạn có thể làm điều đó như thế này:

list_name = "ADF"    
sum([value for key, value in dict.items() if key in list_name])

Lưu ý rằng tôi đã đổi tên từ điển của bạn thành

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
7, vì
name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
8 là hàm python tích hợp, mà bạn không nên sử dụng làm tên biến.Oct 19, 2018 at 9:15

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
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 và
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    0
    : Use
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 and
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    0
  • Phương pháp 2: Sử dụng
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 và biểu thức máy phát
    : Use
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 and a Generator Expression
  • Phương pháp 3: Sử dụng
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    2 và Lambda
    : Use
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    2 and a Lambda
  • Phương pháp 4: Sử dụng
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 và
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    4
    : Use
    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    
    3 and
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    4
  • Phương pháp 5: Sử dụng vòng lặp và tổng hợp
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    5 đơn giản
    : Use a simple
    dict = {'A': 71.07884,
        'B': 110,
        'C': 103.14484,
        'D': 115.08864,
        'E': 129.11552,
        'F': 147.1766,
       }
    
    name = "ABC"
    values = []
    for character in name:
        for key, value in dict.items():
            if key == character:
                values.append(value)
    sum(values)
    
    5 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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 và
dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
0 để tổng hợp tất cả các giá trị của từ điển Python với biểu thức
dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
8.

Ở đâ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,

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
9 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(values)
Out[6]: 284.22368
0. Sau đó, sử dụng
sum(values)
Out[6]: 284.22368
1, đầu ra được sửa đổi để hiển thị dấu hiệu đô la (
sum(values)
Out[6]: 284.22368
2), 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(values)
Out[6]: 284.22368
0. Then using
sum(values)
Out[6]: 284.22368
1, the output is modified to display a Dollar sign (
sum(values)
Out[6]: 284.22368
2), 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 = round(sum(wages.values()), 2)
print(total)

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

sum(values)
Out[6]: 284.22368
0. 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(values)
Out[6]: 284.22368
0. 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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 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(values)
Out[6]: 284.22368
5.

Ở đây, ví dụ:

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

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

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
9 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(values)
Out[6]: 284.22368
0. Sau đó, sử dụng
sum(values)
Out[6]: 284.22368
1, đầu ra được sửa đổi để hiển thị dấu hiệu đô la (
sum(values)
Out[6]: 284.22368
2), 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ả thành hai (2) vị trí thập phân và tiết kiệm cho

sum(values)
Out[6]: 284.22368
0. 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

wages = {'01': 910.56, '02': 1298.68, '03': 1433.99, '04': 1050.14, '05': 877.67}
total = functools.reduce(lambda tot, v: tot+wages[v], wages, 0)
print(total)

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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 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(values)
Out[6]: 284.22368
5.

Ở đây, ví dụ:

5571.04

Vòng lặp

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
5 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(values)
Out[6]: 284.22368
0.


Sau đó, sum(values) Out[6]: 284.22368 1 được sử dụng để sửa đổi đầu ra để hiển thị dấu hiệu đô la (sum(values) Out[6]: 284.22368 2), 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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
0

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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
3 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(values)
Out[6]: 284.22368
5.

Ở đây, ví dụ:

Ở đây, ví dụ:

5571.04

Vòng lặp dict = {'A': 71.07884, 'B': 110, 'C': 103.14484, 'D': 115.08864, 'E': 129.11552, 'F': 147.1766, } name = "ABC" values = [] for character in name: for key, value in dict.items(): if key == character: values.append(value) sum(values) 5 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(values) Out[6]: 284.22368 0.

Sau đó,

sum(values)
Out[6]: 284.22368
1 được sử dụng để sửa đổi đầu ra để hiển thị dấu hiệu đô la (
sum(values)
Out[6]: 284.22368
2), 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

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 
1

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

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
2 kết hợp với hàm LambDA trong biểu thức
mydict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

sum(value for key, value in mydict.items() if key in name)

# 284.22368
2.


Ở đâ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,

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
9 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

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)
2 đượ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(values)
Out[6]: 284.22368
0 và là đầu ra cho thiết bị đầu cuối.


Hướng dẫn sum specific values in dictionary python - tính tổng các giá trị cụ thể trong từ điển 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