如何对字典列表进行排序?

时间:2014-11-20 03:36:26

标签: python

如果我有一个词典列表:

[{'name':a,  'number':b,  'blah':c,  'swag':d},
 {'name':a_1,'number':b_1,'blah':c_1,'sw‌​ag':d_1},
 {'name':a_2,'number':b_2,'blah':c_2,'swag':d_2}] 

我如何打印所有'名称'按字母顺序排列的值和“#”数字'值按降序排列? 让我们来说' a'值是字符串,' b'值是整数。 我如何打印所有名称'按字母顺序排列的值和“#”数字'值按降序排列?

3 个答案:

答案 0 :(得分:1)

您可以使用内置"排序"对列表进行排序。功能。您可以使用列表推导来提取名称和数字。结合两者:

>>> dict_list = [{'name':a,'number':b,'blah':c,'swag':d},{'name':a_1,'number':b_1,'blah':c_1,'sw\U+200C​ag':d_1},{'name':a_2,'number':b_2,'blah':c_2,'swag':d_2}]
>>> sorted_names = sorted([d['name'] for d in dict_list])
>>> sorted_names
['a', 'a_1', 'a_2']
>>> sorted_numbers = sorted([d['number'] for d in dict_list], reverse=True)
>>> sorted_numbers
[3, 2, 1]

答案 1 :(得分:0)

按照姓名'对字典进行排序。按升序/字母顺序然后(对于那些具有相同'名称')的数字'数字'按降序排列,

首先排序'数字'按降序排列

list_of_dict_by_numbers = sorted(original_list_of_dict, key=lambda d: d['number'], reverse=True)

list_of_dict_by_numbers = sorted(original_list_of_dict, key=lambda d: -d['number'])

然后排序' name'按升序/字母顺序

result = sorted(list_of_dict_by_numbers, key=lambda d: d['name'])

由于python排序是稳定的,那些具有相同名称的dict记录'将保留他们的号码'按降序排列。

How to sort in Python

答案 2 :(得分:0)

查看Python的排序函数文档:

https://wiki.python.org/moin/HowTo/Sorting

请务必阅读有关按键的部分!