2017-08-20 199 views
0

我需要編寫一個sort_contacts函數,它將聯繫人字典作爲參數,並返回這些聯繫人的排序列表,其中每個聯繫人都是元組。如何按Python中字典的姓氏對字典列表進行排序?

將傳遞到函數中的聯繫人字典具有聯繫人姓名作爲其鍵,並且該值是包含聯繫人的電話號碼和電子郵件的元組。

接觸= {名稱:(電話,電子郵件),名稱:(電話,電子郵件)等}

然後sort_contacts函數應該創建一個元組的新的分類(按姓氏)名單代表字典中的所有聯繫信息(每個聯繫人的一個元組)。然後它應該將這個列表返回給調用函數。

例如,給定的字典參數:

{("Horney, Karen": ("1-541-656-3010", "[email protected]ychoanalysis.com"), 
    "Welles, Orson": ("1-312-720-8888", "[email protected]"), 
    "Freud, Anna": ("1-541-754-3010", "[email protected]")} 

sort_contacts應該返回此:

[('Freud, Anna', '1-541-754-3010', '[email protected]'), 
    ('Horney, Karen', '1-541-656-3010', '[email protected]'), 
    ('Welles, Orson', '1-312-720-8888', '[email protected]')]** 
+0

你嘗試過這麼遠嗎? – user3080953

回答

3

你可以簡單地添加keyvaluesort

>>> sorted((k,)+v for k, v in contacts.items()) 
[('Freud, Anna', '1-541-754-3010', 'anna[email protected]'), 
('Horney, Karen', '1-541-656-3010', '[email protected]'), 
('Welles, Orson', '1-312-720-8888', '[email protected]')] 

如果你不關心嵌套元組t母雞,你可以簡單地說:

>>> sorted(contacts.items()) 
[('Freud, Anna', ('1-541-754-3010', '[email protected]')), 
('Horney, Karen', ('1-541-656-3010', '[email protected]')), 
('Welles, Orson', ('1-312-720-8888', '[email protected]'))] 
-1
def sort_contacts(contacts): 
    real_contacts=[] 
    function_keys=contacts.keys() 

    for key in sorted(function_keys): 
     data = (key, contacts[key][0], contacts[key][1]) 
     real_contacts.append(data) 

    return real_contacts