我有一个由字符串和字典组成的元组列表,如下所示
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
问题是我只访问字典,而不是字典的元素。
答案 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