在字典中搜索值

时间:2017-04-22 05:24:27

标签: python dictionary count

想要统计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。我怎样才能让它回归真实 最后,我试图计算字典中某个年龄段的男性人数

4 个答案:

答案 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'将导致TrueFalse,其将被评估为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”的所有键的列表。