根据特定的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'}
]
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']

截图

最新更新