按名字排序的字典的Python排序列表

时间:2017-10-31 04:52:00

标签: python python-3.x sorting dictionary

我正在尝试对dep_list进行排序,这是一个包含员工信息(名称,部门,职位,薪水)的词典列表。现在我相信我按名字排序,但我想按姓氏排序。如果可能的话,不要将'name'分成2个不同的字符串。

#Function for adding employee information
def add_emp():
    #Ask the user to add an employee
    print("Enter the employee's information:\n")
    #Input first and last name
    name = str(input("What is the employee's name? ")).title()
    #Input employee position
    position = str(input("What is their position? ")).title()
    #Input employee department
    em_department = str(input("What is their department? ")).title()
    #Make sure the salary is numeric
    try:
        #Input employee salary
        salary = round(float(input("What is their salary? ")), 2)
        #Add information to a dictionary called employees
        employees[name] = {"name": name, "position": position,     "em_department": em_department, "salary": salary}
    except:
        print("Salaries must be numeric, silly!")

#Function for adding employees to dictionary by department
def dep_emp():
    #Go through all department names stored in the tuple
    for x in dep_tup:
        #Initialize department list each time to ensure correct sorting
        dep_list = []
        #Go through all employee dictionaries; when matched, add to the list associated with the corresponding key in the dep_dict dictionary
        for names in employees:
            if x == employees[names]["em_department"]:
                dep_list.append(employees[names])
                dep_list.sort(key=operator.itemgetter('name'))
                dep_dict[x] = dep_list
                continue

注意:词典列表如下所示: {

department1:[{'name':name,'e​​m_department':department,'position':position,'salary':salary},...],

department2:[...]

}

1 个答案:

答案 0 :(得分:3)

dep_list.sort(key=lambda x: x['name'].split()[-1])

对于dep_list中的每个字典,找到与name键关联的值,将其拆分,并根据拆分中的最后一个字符串进行排序(应该是姓氏)。