2017-10-31 19 views
0

私は、従業員情報(名前、部署、役職、給料)を含む辞書のリストであるdep_listをソートしようとしています。今私は名前でソートしていると信じていますが、私は姓でソートしたいと思います。可能であれば、2つの異なる文字列に '名前'を壊すことなく可能です。Pythonの姓別辞書リスト

#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:[{ '名前':名前、 'em_department':部門、 '位置':位置、 '給与':給与辞書のリストは、次のようになります}、...]、

department2:[...]

}

答えて

3

これが何をすべき:

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

dep_listにおける各辞書の説明

nameキーに関連付けられている値を見つけ、それを分割し、ソート(姓でなければなりません)分割の最後の文字列に基づいて。