如果我有一个词典列表:
[{'name':a, 'number':b, 'blah':c, 'swag':d},
{'name':a_1,'number':b_1,'blah':c_1,'swag':d_1},
{'name':a_2,'number':b_2,'blah':c_2,'swag':d_2}]
我如何打印所有'名称'按字母顺序排列的值和“#”数字'值按降序排列? 让我们来说' a'值是字符串,' b'值是整数。 我如何打印所有名称'按字母顺序排列的值和“#”数字'值按降序排列?
答案 0 :(得分:1)
您可以使用内置"排序"对列表进行排序。功能。您可以使用列表推导来提取名称和数字。结合两者:
>>> dict_list = [{'name':a,'number':b,'blah':c,'swag':d},{'name':a_1,'number':b_1,'blah':c_1,'sw\U+200Cag':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记录'将保留他们的号码'按降序排列。
答案 2 :(得分:0)