在python 2中按多个条件(年龄范围和性别)筛选姓名
到目前为止,这在我的文本和代码中:在python 2中按多个条件(年龄范围和性别)筛选姓名,python,python-2.7,filter,Python,Python 2.7,Filter,到目前为止,这在我的文本和代码中: { "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},
{
"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岁的男性(M)。我还试图找出是否只需要满足一个条件,这就是我迄今为止在代码中所具备的条件,但程序运行时没有出现错误,但没有给出我想要的输出。我也不知道名称[1]的作用。如果有人能帮我解决这个问题并帮助我理解过滤功能,我将不胜感激。顺便问一下,我使用int()作为提示是否正确?谢谢过滤器(lambda person:person['age']>=22和
filter(lambda person: person['age'] >= 22 and
person['age'] <= 25 and person['gender'] == 'M', members['people'])
人[“年龄”]=22和
人员['age']过滤器(lambda人员:人员['age']>=22和
人[“年龄”]=22和
person['age']您可以使用列表理解,并在每行应用一个过滤函数
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) ]
def按年龄过滤(个人、年龄从、年龄到):
如果年龄从开始,您可以使用列表理解,并在每行应用一个过滤函数
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) ]
def按年龄过滤(个人、年龄从、年龄到):
如果第一个的age_有错误,表示成员未定义。第二个给出了无效的语法。你称它为my_data
,我称它为members
(就像你在函数中所做的那样)。没什么大不了的。(我忘了在其中一个中钻研人
;现在已修复。不应该是语法错误,我刚刚测试了这两个。)第一个有一个错误,表示成员未定义。第二个给出了一个无效的语法。你称它为my_data
,我称它为members
(就像你在函数中所做的那样)。没什么大不了的。(我忘了在其中一个中钻研人
;现在已修复。不应该是语法错误,我刚刚测试了这两个。)谢谢,它起作用了,所以如果我需要把名字与之对应的人放在一起,我应该放什么?例如,我需要男性(M),年龄22到25岁。我只需要打印真实的人的名字,而不是整行。在列表理解中,你可以对每个匹配的元素应用任何函数(元素在这里是词汇表)例如,如果你只对你能做的名字感兴趣:[p['name']代表我的数据中的p['people']if filter\u by\u age(p,age\u from,age\u to)]
。列表理解是一个非常有用的工具。请查看此处的列表理解部分[.还有听写理解和集合理解。好的,非常感谢你的帮助..希望你下次能回答我的其他问题,因为我是编程新手:)谢谢它起作用了,所以如果我需要把名字对应的人放在哪里我应该放在哪里?例如,我需要男性(M)年龄在22到25岁之间。我只需要打印真实姓名,而不是整行。在列表理解中,你可以对每个匹配元素应用任何函数(元素在这里是词汇)。例如,如果你只对姓名感兴趣,你可以这样做:[p['name']表示我的数据中的p['people']如果按年龄过滤(p,age\u from,age\u to)
。列表理解是一个非常有用的工具。请查看此处的部分列表理解[。还有听写理解和集合理解。好的,非常感谢您的帮助。。希望您下次能回答我的其他问题,因为我是编程新手:)