是否可以从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'}
答案 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']