根据键中的值过滤字典

时间:2020-07-15 06:03:00

标签: python dictionary filter

我想过滤包含“ hometown”:“ NY”的字典

[{'name': 'paul', 'age': '26', 'hometown': 'AU', 'gender': 'male'},
{'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'},
{'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'},
{'name': 'raj', 'age': '13', 'hometown': 'IND', 'gender': 'male'},.....]

这是我的代码

a=[]
for test in result:
   x={}
   for key,value in test.items():
        if key == 'hometown':
            if 'NY' in value:
                x[key] = value
   a.append(x)

这是我的输出:

[{}, {'hometown': 'NY'}, {'hometown': 'NY'}, {}]

我想要的输出将是:

[{'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'},
{'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'}]

2 个答案:

答案 0 :(得分:1)

In [12]: a = [{'name': 'paul', 'age': '26', 'hometown': 'AU', 'gender': 'male'},
    ...:
    ...: {'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'},
    ...: {'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'},
    ...: {'name': 'raj', 'age': '13', 'hometown': 'IND', 'gender': 'male'}]

In [13]: [i for i in a if i["hometown"]=="NY"]
Out[13]:
[{'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'},
 {'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'}]

答案 1 :(得分:1)

您可以尝试以下方法:

result = [{'name': 'paul', 'age': '26', 'hometown': 'AU', 'gender': 'male'},
{'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'},
{'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'},
{'name': 'raj', 'age': '13', 'hometown': 'IND', 'gender': 'male'}]

a=[]
for i, test in enumerate(result):
    for key,value in test.items():
        if key == 'hometown':
            if 'NY' in value:
                a.append(result[i])
print(a)

输出:

[{'name': 'mei', 'age': '27', 'hometown': 'NY', 'gender': 'female'}, {'name': 'smith', 'age': '14', 'hometown': 'NY', 'gender': 'male'}]