在元组列表中的元组中提取dict的特定元素

时间:2017-05-13 13:37:36

标签: python list dictionary tuples

我有一个由字符串和字典组成的元组列表,如下所示

List = [
    ("mike", {
        'age': 27, 
        'favorite food': 'pizza', 
        'favorite drink': 'beer'
    }), 
    ("jessie", {
        'age': 35, 
        'favorite food': 'eggs',
        'favorite drink': 'tea'
    }), 
    ("frank", {
        'age': 14, 
        'favorite food': 'bread',
        'favorite drink':'fanta'
    })
]

我想循环浏览该列表并提取[收藏饮料]中的数据,以便与其他人进行比较。

假设我循环浏览列表并检查用户是否喜欢啤酒,他得分为1。

到目前为止,我已经得到了:

for x in list:
    if list[0][1] == 'beer':
         beer-counter += 1 

问题是我只访问字典,而不是字典的元素。

3 个答案:

答案 0 :(得分:3)

的确,list[0][1]是一本字典。但如果它是字典,您可以使用[]运算符来获取所需的密钥list[0][1]['favorite drink']

答案 1 :(得分:2)

首先,您缺少样本数据中的结尾引用'

这是完成任务的正确方法之一。

beer_counter = 0
for x in list:
    if x[1]['favorite drink'] == 'beer':
        beer_counter += 1

答案 2 :(得分:1)

您需要稍微修改一下您的循环并使用collections.Counter来轻松记录:

lst = [("mike", {'age': 27, 'favorite food': 'pizza', 'favorite drink':'beer'}), ("jessie", {'age': 35, 'favorite food': 'eggs','favorite drink':'tea'}), ("frank", {'age': 14, 'favorite food':'bread', 'favorite drink':'fanta'})]
from collections import Counter
cnt = Counter()
for x in lst:
    cnt[x[1]['favorite drink']] += 1