想要统计20岁以上字典中的男性人数。
我有以下字典
i={'joe':("male",25), 'fred':("male",39), 'susan':("female",20)}
我知道如何在字典中搜索密钥,例如
print ('joe' in i)
返回true但
print ('male' in i.values())
print ('male in i)
都返回false。我怎样才能让它回归真实 最后,我试图计算字典中某个年龄段的男性人数
答案 0 :(得分:2)
您可以在sum
中使用generator expression:
In [1]: dictionary = {'joe':("male",25), 'fred':("male",39), 'susan':("female",20)}
In [2]: sum(gender=='male' for gender, age in dictionary.values() if age > 20)
Out[2]: 2
条件gender=='male'
将导致True
或False
,其将被评估为1或0.这样可以通过总结最终结果来计算有效条件。
答案 1 :(得分:2)
您可以使用.iter()
函数迭代dict中的键和值。然后,您可以检查0指数的“男性”和1个年龄指数的值。
count = 0
for key, value in i.iter():
if value[0] == "male" and value[1] > 20:
count += 1
答案 2 :(得分:1)
i={'joe':("male",25), 'fred':("male",39), 'susan':("female",20)}
'joe' in i
equals
'joe' in i.keys()
where i.keys() == ['joe', 'fred', 'susan']
现在,
i.values()
[('female', 20), ('male', 25), ('male', 39)]
这里,例如每个元素(' female',20)是一个元组,你试图将它与一个字符串进行比较,这会给你错误。
So when you do
print ('male' in i.values()) -> returns false
print ('male in i) -> 'male' not in i.keys()
解决方案如下:
sum(x=='male' and y > 20 for x, y in i.values())
or
count = 0
for x, y in i.values():
if x == 'male' and y > 20:
count += 1
print(count)
答案 3 :(得分:1)
keys = [x for x, y in token.items() if "joe" in y]
给出值中包含“joe”的所有键的列表。