获取字典Python中具有特定值的所有键

时间:2020-08-20 15:58:32

标签: python dictionary

是否可以从Python字典中获取所有与特定值匹配的键?

例如,我有一本包含以下数据的字典:

dataset = [

        {'name': 'A', 'age': 37, 'gender': 'M'},
        {'name': 'B', 'age': 20, 'gender': 'F'},
        {'name': 'C', 'age': 17, 'gender': 'M'},
        {'name': 'D', 'age': 19, 'gender': 'F'},
        {'name': 'E', 'age': 30, 'gender': 'F'}
    ]

我想过滤字典并获取Gender ='F'的所有键。

我在下面的行中过滤值“ F”的键“性别”。

res = next((sub for sub in dataset if sub['gender'] == 'F'), None)
print(res)

但是,我只有1个键作为输出。

输出: {'name': 'B', 'age': 27, 'gender': 'F'}

希望将其作为输出:

{'name': 'B', 'age': 20, 'gender': 'F'}
{'name': 'D', 'age': 19, 'gender': 'F'}
{'name': 'E', 'age': 30, 'gender': 'F'}

3 个答案:

答案 0 :(得分:0)

只需使用这样的条件列表理解:

[i for i in dataset if i['gender'] == 'F']

应提供:

[{'name': 'B', 'age': 20, 'gender': 'F'}, {'name': 'D', 'age': 19, 'gender': 'F'}, {'name': 'E', 'age': 30, 'gender': 'F'}]

答案 1 :(得分:0)

您也可以尝试以下代码:

dataset = [{'name': 'A', 'age': 37, 'gender': 'M'}, {'name': 'B', 'age': 20, 'gender': 'F'}, {'name': 'C', 'age': 17, 'gender': 'M'}, {'name': 'D', 'age': 19, 'gender': 'F'},{'name': 'E', 'age': 30, 'gender': 'F'} ]
for i in dataset:
    if i['gender']=='F':
        print(i)

答案 2 :(得分:0)

我不确定为什么要使用下一个函数,但是简单的列表理解就能做到:

res = [sub for sub in dataset if sub['gender'] == 'F']