如何从元组中调用项

时间:2019-01-25 21:26:01

标签: python tuples

我有视频广告列表的数据,我希望它是不可变的,因此我以元组形式打印。下面是我的代码:

video_ads_list = (
     {
         "title": "Healthy Living",
         "company": "Health Promotion Board",
         "views": 65423
     },
     {
         "title": "Get a ride, anytime anywhere",
         "company": "GoJek",
         "views": 54323
     },
     {
         "title": "Send money to your friends with GrabPay",
         "company": "Grab",
         "views": 654306
     },
     {
         "title": "GrabEat now delivers nationwide",
         "company": "Grab",
         "views": 5123
     },
     {
         "title": "Get cabs now with GoJekFlash",
         "company": "GoJek",
         "views": 62353
     }
)

print(video_ads_list)

使用此代码,我可以获取打印的数据,但不能调用某些项目,例如“视图”。我需要观看次数的价值,以便可以进行一些计算,例如视频价格等。 例如,如何获得“健康生活”和Gojek的意见。

4 个答案:

答案 0 :(得分:3)

不是您的意思的100%,但是您可以通过使用

获得价值
print(video_ads_list[2]["views"])

这将打印项目2的视图:

654306

答案 1 :(得分:2)

您可以制作一个单独的字典,将视频名称映射到观看次数:

video_ads_list = (
     {
         "title": "Healthy Living",
         "company": "Health Promotion Board",
         "views": 65423
     },
     ...
)

d = {vid['title']: vid['views'] for vid in video_ads_list}

d如下所示:

{'Healthy Living': 65423,
 'Get a ride, anytime anywhere': 54323,
 'Send money to your friends with GrabPay': 654306,
 'GrabEat now delivers nationwide': 5123,
 'Get cabs now with GoJekFlash': 62353}

因此,要获取'Healthy Living'的观看次数,请编写d['Healthy Living']

您可以像这样建立一家公司dict

from collections import defaultdict

companies = defaultdict(int)

for vid in video_ads_list:
    companies[vid['company']] += vid['views']

companies将是:

defaultdict(int, {'Health Promotion Board': 65423, 'GoJek': 116676, 'Grab': 659429})

答案 2 :(得分:1)

您的词典在集合内。例如,为了访问"views": 65423,您首先必须告诉python他应该从集合中选择哪些字典,在本示例中,它是第一个,然后您可以从字典中按顺序选择想要的键返回其值video_ads_list[0]['views']。因此,如果我们要选择"company": "GoJek",则必须输入video_ads_list[1]['company']

答案 3 :(得分:0)

您可以使用所需的指定键和值创建一个dict,然后将video_ads_list的每个元素与其进行比较。

specified_fields = {
    'title': "Healthy Living",
    'company': 'GoJek'
}

for i in video_ads_list:
    if any(i[k] == specified_fields[k] for k in specified_fields):
        print(i['title'], i['views'])

输出

Healthy Living 65423
Get a ride, anytime anywhere 54323
Get cabs now with GoJekFlash 62353