如果您有一个字典列表:
如何过滤列表中所有女性或男性的名字?
我在尝试如下
example = [
{'name':'Jane','gender':'female'},
{'name':'Ben','gender':'male'},
{'name':'Kate','gender':'female'},
{'name':'James','gender':'male'},
{'name':'Lilly','gender':'female'},
{'name':'Sam','gender':'male'},
{'name':'Grace','gender':'female'},
{'name':'Dan','gender':'male'}
]
for dictionary in example:
dictfilt = lambda x, y: dict([(i, x[i]) for i in x if i in set(y)])
wanted_keys = ("name", "gender")
result = dictfilt(dictionary, wanted_keys)
print(result)
#### The output will give a tuple of the name and the gender ####
for item in result.items():
print(item)
for key, value in result.items():
if value == 'one_day':
print(key)
但这和我想要的相差甚远。
如果要过滤字典列表,可以使用列表推导式:
example = [
{"name": "Jane", "gender": "female"},
{"name": "Ben", "gender": "male"},
{"name": "Kate", "gender": "female"},
{"name": "James", "gender": "male"},
{"name": "Lilly", "gender": "female"},
{"name": "Sam", "gender": "male"},
{"name": "Grace", "gender": "female"},
{"name": "Dan", "gender": "male"},
]
females = [d["name"] for d in example if d["gender"] == "female"]
males = [d["name"] for d in example if d["gender"] == "male"]
print(f"{females=}")
print(f"{males=}")
打印:
females=['Jane', 'Kate', 'Lilly', 'Grace']
males=['Ben', 'James', 'Sam', 'Dan']
希望这对你有用:
my_list = [
{"name": "Jane", "gender": "female"},
{"name": "Ben", "gender": "male"},
{"name": "Kate", "gender": "female"},
{"name": "James", "gender": "male"},
{"name": "Lilly", "gender": "female"},
{"name": "Sam", "gender": "male"},
{"name": "Grace", "gender": "female"},
{"name": "Dan", "gender": "male"},
]
m=[]
f=[]
for i in my_list:
if i["gender"]=="male":
m.append(i["name"])
else:
f.append(i["name"])
print(f"Male:n{m}nFemale:n{f}")
新代码:
my_list =[{'id': '*1', 'name': 'admin', 'password': '1234', 'profile': 'default', 'uptime': '1h3m49s', 'bytes-in': '769490', 'bytes-out': '9543516', 'packets-in': '4389', 'packets-out': '7383', 'dynamic': 'false', 'disabled': 'false'}, {'id': '*2', 'server': 'hotspot1', 'name': 'ARTRbD0W', 'password': 'ARTRbD0W', 'profile': '1hour', 'limit-uptime': '1h', 'uptime': '0s', 'bytes-in': '0', 'bytes-out': '0', 'packets-in': '0', 'packets-out': '0', 'dynamic': 'false', 'disabled': 'false', 'comment': '1 Hour : "30"'}]
names=[]
for i in my_list:
if "profile" in i:
if i["profile"]=="1hour":
names.append(i["name"])
print(f"Names:n{names}")
结果:
Names:
['ARTRbD0W']
截图