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

Python 提取元组列表中元组中dict的特定元素,python,list,dictionary,tuples,Python,List,Dictionary,Tuples,我有一个元组列表,由字符串和字典组成,如下所示 List = [ ("mike", { 'age': 27, 'favorite food': 'pizza', 'favorite drink': 'beer' }), ("jessie", { 'age': 35, 'favorite food': 'eggs', 'favorite drink': 'tea'

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

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 

问题是我只访问字典,而不是使用我所拥有的内容访问字典的元素。

事实上,
list[0][1]
是一本字典。但是如果它是一个字典,你可以使用
[]
操作符来获取你想要的键
list[0][1][“最喜欢的饮料”]

事实上,
list[0][1]
是一个字典。但是如果它是一个字典,您可以使用
[]
操作符获取所需的键
列出[0][1]['favorite Drinks']

首先,示例数据中缺少结尾引号
'

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

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

首先,示例数据中缺少结尾引号

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

beer_counter = 0
for x in list:
    if x[1]['favorite drink'] == 'beer':
        beer_counter += 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

您需要稍微调整一下循环,并使用
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

哦,好吧,我想程序不能把它作为列表的额外索引,我不明白我是针对这个词的,[]运算符的结果是数据结构中该位置的任何结果。所以,list是一个list,list[0]是一个元组,list[1]是一个字典,等等。对于它们中的每一个,您都可以应用特定于该数据类型的操作。哦,好吧,我想程序会将其作为列表的额外索引,而不理解我的目标是词汇,[]运算符的结果是您在该位置的数据结构中拥有的任何内容。所以,list是一个list,list[0]是一个元组,list[1]是一个字典,等等。对于其中的每一个,您都可以应用特定于该数据类型的操作。谢谢大家,我通过组合您的所有答案解决了我的问题:)谢谢大家,我通过组合您的所有答案解决了我的问题:)