Python2中按多个条件(年龄范围和性别)筛选姓名

2024-04-25 09:40:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我目前为止的文本和代码:

{
      "people": [
        {"name": "Jack", "gender": "M", "age": 25},
        {"name": "Jerald", "gender": "M", "age": 24},
        {"name": "Jim", "gender": "M", "age": 23},
        {"name": "Bill", "gender": "M, "age": 22},
        {"name": "Barry", "gender": "M", "age": 25},
        {"name": "Rikki", "gender": "M", "age": 35},
        {"name": "Ross", "gender": "M", "age": 33},
        {"name": "Jane", "gender": "F", "age": 25},
        {"name": "Bela", "gender": "F", "age": 24},
        {"name": "Cheeky", "gender": "F", "age": 22}
      ]
    }

import pprint
import json

my_data = json.loads(open("people.json.txt").read())


print "Choose the lowest age limit:",
age_from = int(raw_input())
print "Choose the highest age limit:",
age_to = int(raw_input())

print "People age from %r to %r." % ( age_from, age_to)

def filter_by_age_range(members, age_from, age_to):
print'%s'  % name [1]

我试图跟踪某个关于过滤的网页,但我似乎不能使用过滤方法,尤其是当两个条件都要满足的时候。比如我需要22到25岁的男性。我也在试着找出是否只满足一个条件,这就是我目前在我的代码中所拥有的条件,但是程序运行没有错误,但是它没有给出我想要的输出。我也不知道名称[1]是什么意思。如果有人能帮我解决这个问题,也能帮助我理解过滤器的功能,我将不胜感激。顺便问一下,我使用int()作为提示是否正确?谢谢


Tags: theto代码namefromimportjsonage
2条回答
filter(lambda person: person['age'] >= 22 and
    person['age'] <= 25 and person['gender'] == 'M', members['people'])

或者

^{pr2}$

两者都做同样的事情。在

您可以使用列表理解,并对每一行应用一个筛选函数

def filter_by_age( person, age_from, age_to ):
    if age_from <= person['age'] <= age_to and person['gender']=='M': return True
    else: False

filtered_people = [ p for p in my_data['people'] if filter_by_age(p, age_from, age_to) ]

相关问题 更多 >