代码之家  ›  专栏  ›  技术社区  ›  Tarzan

Python按姓氏排序字典列表

  •  0
  • Tarzan  · 技术社区  · 8 年前

    我试图对dep_列表进行排序,这是一个包含员工信息(姓名、部门、职位、工资)的字典列表。现在我相信我已经按名字排序了,但是我想按姓氏排序。如果可能的话,不要将“name”分成两个不同的字符串。

    #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
    

    {

    部门2:[…]

    }

    1 回复  |  直到 8 年前
        1
  •  3
  •   cs95 abhishek58g    7 年前
    dep_list.sort(key=lambda x: x['name'].split()[-1])
    

    对于中的每个词典 dep_list ,查找与 name 键,将其拆分,并根据拆分中的最后一个字符串(应为姓氏)排序。