如何使用嵌套字典遍历列表?

2024-06-11 13:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个列表,里面有嵌套的字典,我要做的是从字典中读取视图的值,并将它们放入一个乘法器中。在

video_ads=({'title': 'Healthy Living', 'company': 'Health Promotion 
Board','views': 15934},
{'title': 'Get a ride, anytime anywhere', 'company': 'Uber', 'views': 
923834},
{'title': 'Send money with GrabPay', 'company': 'Grab', 'views': 23466},
{'title': 'Ubereats now delivers nationwide', 'company': 'Uber', 'views': 
1337},
{'title': 'Get cabs now with UberFlash', 'company': 'Uber', 'views': 90234})

所以我要做的就是把标题和观点结合起来,再加上某种因素,这就是我目前所写的

^{pr2}$

但它似乎只打印了一行,例如:

 Get cabs now with UberFlash: $49628.700000000004
 Get cabs now with UberFlash: $49628.700000000004
 Get cabs now with UberFlash: $49628.700000000004
 Get cabs now with UberFlash: $49628.700000000004
 Get cabs now with UberFlash: $49628.700000000004

我只知道这些。我需要5行,所有的都有不同的标题和金额。救命啊!!!先谢谢你!在


Tags: 视图标题列表get字典titlevideowith
3条回答
video_ads=({'title': 'Healthy Living', 'company': 'Health Promotion Board','views': 15934},
           {'title': 'Get a ride, anytime anywhere', 'company': 'Uber', 'views': 923834},
           {'title': 'Send money with GrabPay', 'company': 'Grab', 'views': 23466},
           {'title': 'Ubereats now delivers nationwide', 'company': 'Uber', 'views': 1337},
           {'title': 'Get cabs now with UberFlash', 'company': 'Uber', 'views': 90234})

def payment_for_views(item):
    if item >= 50000:
        payment = item * 0.55
    elif item < 50000 and item >= 10000:
        payment = item * 0.68
    else:
        payment = item * 0.82
    return payment

[print(per_ad['title'], ': $' + str(payment_for_views(per_ad['views']))) for per_ad in video_ads]

输出:

Healthy Living : $10835.12

Get a ride, anytime anywhere : $508108.70000000007

Send money with GrabPay : $15956.880000000001

Ubereats now delivers nationwide : $1096.34

Get cabs now with UberFlash : $49628.700000000004

for a in video_ads:
    print('%s: $%.2f' % (a['title'], a['views'] * (0.55 if a['views'] >= 50000 else 0.68 if a['views'] >= 10000 else 0.82)))

该输出:

^{pr2}$

您需要将print语句放入for循环中。在

print放在循环之后和之外,意味着x将固定在for循环中设置的最终值。在

def payment_for_views(x):
    for x in range(len(x)):
        if video_ads[x]['views'] >= 50000:
            payment = video_ads[x]['views']*0.55
        elif video_ads[x]['views'] <50000 and video_ads[x]['views'] >=10000:
            payment=video_ads[x]['views']*0.68
        else:
            payment = video_ads[x]['views']*0.82
        print(video_ads[x]['title'] + ': $'+ str(payment))

有许多方法可以改进代码:

  1. 直接迭代你的字典,而不是按索引。在
  2. 为每个字典提取一次“views”值并分配给一个变量。在
  3. 使用链式比较检查一个值是否在其他两个值之间。在
  4. 使用指定了十进制精度的f字符串(python3.6+)。在

下面是一个演示:

^{pr2}$

结果:

Healthy Living: $10835.12
Get a ride, anytime anywhere: $508108.70
Send money with GrabPay: $15956.88
Ubereats now delivers nationwide: $1096.34
Get cabs now with UberFlash: $49628.70

相关问题 更多 >