簡體   English   中英

如何在Python中按字典的姓氏對字典列表進行排序?

[英]How do I sort a list of dictionaries by last name of the dictionary in Python?

我需要編寫一個sort_contacts函數,該函數將聯系人字典作為參數,並返回這些聯系人的排序列表,其中每個聯系人都是一個元組。

將傳遞到函數中的聯系人字典以聯系人名稱作為鍵,值是一個包含該聯系人的電話號碼和電子郵件的元組。

聯系人= {姓名:(電話,電子郵件),姓名:(電話,電子郵件)等}

然后,sort_contacts函數應創建一個新的,已排序(按姓氏排序)的元組列表,該列表表示字典中的所有聯系人信息(每個聯系人一個元組)。 然后,應將此列表返回給調用函數。

例如,給定一個字典參數:

    {("Horney, Karen": ("1-541-656-3010", "karen@psychoanalysis.com"),
    "Welles, Orson": ("1-312-720-8888", "orson@notlive.com"),
    "Freud, Anna": ("1-541-754-3010", "anna@psychoanalysis.com")}

sort_contacts應該返回以下內容:

    [('Freud, Anna', '1-541-754-3010', 'anna@psychoanalysis.com'), 
    ('Horney, Karen', '1-541-656-3010', 'karen@psychoanalysis.com'), 
    ('Welles, Orson', '1-312-720-8888', 'orson@notlive.com')]**

您可以簡單地添加keyvalue並進行sort

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

如果您不關心嵌套元組,則可以簡單地:

>>> sorted(contacts.items())
[('Freud, Anna', ('1-541-754-3010', 'anna@psychoanalysis.com')),
 ('Horney, Karen', ('1-541-656-3010', 'karen@psychoanalysis.com')),
 ('Welles, Orson', ('1-312-720-8888', 'orson@notlive.com'))]
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM