我有一个名单。我的任务是从列表中制作一本字典,然后按性别划分为两本。我知道如何制作一本字典,但如何将它除以2并返回之后。 这是我到目前为止所做的:
def to_dictionary(names: list) -> dict:
""" Make a dictionary from a list of names."""
dct = dict()
for i in names:
dct[i] = names.count(i)
return dct
def to_sex_dicts(names_dict: dict) -> tuple:
"""Divide the names by sex to 2 different dictionaries."""
if __name__ == '__main__':
example_names = ("Kate:F\n" * 1000 + "Alex:M\n" * 800 + "Marina:F\n" * 600 + "Artyom:M\n" * 400).rstrip("\n").split("\n")
people = to_dictionary(example_names)
print(people)
male_names, female_names = to_sex_dicts(people)
print(male_names)
print(female_names)
答案 0 :(得分:2)
你可以使用词典理解,即
def to_sex_dicts(names_dict: dict) -> tuple:
"""Divide the names by sex to 2 different dictionaries."""
m = {i : names_dict.get(i) for i in names_dict.keys() if ':M' in i}
f = {i : names_dict.get(i) for i in names_dict.keys() if ':F' in i}
return m,f
male_names, female_names = to_sex_dicts(people)
print(male_names)
{'Artyom:M': 400, 'Alex:M': 800}
print(female_names)
{'Marina:F': 600, 'Kate:F': 1000}
答案 1 :(得分:0)
这个简单的循环为我做了诀窍
def to_sex_dicts(names_dict: dict) -> tuple:
females = []
males = []
for k in names_dict:
if k.endswith(':F'):
females.append(k)
elif k.endswith(':M'):
males.append(k)
else:
raise ValueError("Illegal Name")
return males, females