我正在尝试对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,'em_department':department,'position':position,'salary':salary},...],
department2:[...]
}
答案 0 :(得分:3)
dep_list.sort(key=lambda x: x['name'].split()[-1])
对于dep_list
中的每个字典,找到与name
键关联的值,将其拆分,并根据拆分中的最后一个字符串进行排序(应该是姓氏)。