从列表中制作一个字典,然后分成两部分

时间:2017-10-21 12:48:38

标签: python python-3.x

我有一个名单。我的任务是从列表中制作一本字典,然后按性别划分为两本。我知道如何制作一本字典,但如何将它除以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)

2 个答案:

答案 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