簡體   English   中英

如何解決此循環以打印所有值?

[英]How to solve this loop to print all the values?

它應該打印 5,3.33 但它只打印 3?如何打印這兩個值

bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155}, 
             2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159}, 
             3:  {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}
completed_data={155: 1, 174: 1}
for z in completed_data:
    print(z)
for i in bucket_data22:
    if (bucket_data22[i]['id']==z):
        print((completed_data[z]/bucket_data22[i]['value'])*100)


它現在有效:

 bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155}, 
                 2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159}, 
                 3:  {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}

completed_data={155: 1, 174: 1}

for z in completed_data:
    for i in bucket_data22:
        if (bucket_data22[i]['id']==z):
            print((completed_data[z]/bucket_data22[i]['value'])*100)

z具有 completed_data 的最后一個值,因此您只能得到一個匹配項(id 174)。

您應該bucket_data22[i]['id'] in completed_data

for i in bucket_data22:
    if (bucket_data22[i]['id'] in completed_data):
        print((completed_data[z]/bucket_data22[i]['value'])*100)

Output:

5.0
3.3333333333333335

似乎第二個循環僅在第一個循環完成后才開始。
因此,第二個循環始終獲得相同的“z”值,即 174。
如果要迭代 'z' 的所有值,則必須將第二個循環移到第一個循環中。

bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155}, 
         2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159}, 
         3:  {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}
completed_data={155: 1, 174: 1}

for z in completed_data:
    for i in bucket_data22:
        if (bucket_data22[i]['id']==z):
          print((completed_data[z]/bucket_data22[i]['value'])*100)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM