如何按Python中字典的姓氏对字典列表进行排序?

问题描述 投票:0回答:2

我需要编写一个sort_contacts函数,它将联系人字典作为参数,并返回这些联系人的排序列表,其中每个联系人都是一个元组。

将传递给函数的联系人字典将联系人姓名作为其密钥,该值是包含联系人的电话号码和电子邮件的元组。

contacts = {姓名:(电话,电子邮件),姓名:(电话,电子邮件)等}

然后sort_contacts函数应该创建一个新的,排序的(按名字)元组列表,表示字典中的所有联系信息(每个联系人的一个元组)。然后它应该将此列表返回给调用函数。

例如,给定一个字典参数:

    {("Horney, Karen": ("1-541-656-3010", "[email protected]"),
    "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]')]**
python list sorting dictionary
2个回答
3
投票

你可以简单地添加keyvaluesort

>>> sorted((k,)+v for k, v in 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]')]

如果您不关心嵌套元组,那么您可以简单地:

>>> 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
© www.soinside.com 2019 - 2024. All rights reserved.