python 字典排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 字典排序相关的知识,希望对你有一定的参考价值。

我有一个字典0: 5, 1: 4, 2: 5, 3: 4, 4: 2, 5: 2, 6: 2, 7: 0, 8: 2, 9: 0, 10: 2, 11: 0, 12: 0, 13: 4, 14: 0, 15: 0, 16: 0, 17: 0, 18: 0, 19: 0, 20: 0, 21: 0, 22: 0, 23: 2, 24: 3, 25: 2, 26: 0, 27: 1, 28: 1, 29: 0, 30: 2, 31: 3, 32: 3, 33: 3
python字典按值降序排序结果是这样的[(0, 5), (2, 5), (1, 4), (3, 4), (13, 4), (24, 3), (31, 3), (32, 3), (33, 3), (4, 2), (5, 2), (6, 2), (8, 2), (10, 2), (23, 2), (25, 2), (30, 2), (27, 1), (28, 1), (7, 0), (9, 0), (11, 0), (12, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 0), (19, 0), (20, 0), (21, 0), (22, 0), (26, 0), (29, 0)]
我现在想取前得到的这个列表值的key,比如取前5个就应该是0,2,1,3,13
程序该怎么实现。。?

参考技术A dict_a=0: 5, 1: 4, 2: 5, 3: 4, 4: 2, 5: 2, 6: 2, 7: 0, 8: 2, 9: 0, 10: 2, 11: 0, 12: 0, 13: 4, 14: 0, 15: 0, 16: 0, 17: 0, 18: 0, 19: 0, 20: 0, 21: 0, 22: 0, 23: 2, 24: 3, 25: 2, 26: 0, 27: 1, 28: 1, 29: 0, 30: 2, 31: 3, 32: 3, 33: 3
dict_b=sorted(dict_a.iteritems(),key=lambda d:d[1],reverse=True)

print dict_a
print dict_b

for i in range(5):
    print dict_b[i][0]

本回答被提问者采纳
参考技术B list1 = [(0, 5), (2, 5), (1, 4), (3, 4), (13, 4), (24, 3), (31, 3), (32, 3), (33, 3), (4, 2), (5, 2), (6, 2),
        (8, 2), (10, 2), (23, 2), (25, 2), (30, 2), (27, 1), (28, 1), (7, 0), (9, 0), (11, 0), (12, 0), (14, 0),
        (15, 0), (16, 0), (17, 0), (18, 0), (19, 0), (20, 0), (21, 0), (22, 0), (26, 0), (29, 0)]

for i in list1[0:5]:
    print i[0]

python中列表排序,字典排序,列表中的字典排序

#-*- encoding=utf-8 -*-  
  
import operator  
#按字典值排序(默认为升序)  
x = {1:2, 3:4, 4:3, 2:1, 0:0}  
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))  
print sorted_x  
#[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]  
#如果要降序排序,可以指定reverse=True  
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)  
print sorted_x  
#[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]  
#或者直接使用list的reverse方法将sorted_x顺序反转  
#sorted_x.reverse()  
  
#取代方法是,用lambda表达式  
sorted_x = sorted(x.iteritems(), key=lambda x : x[1])  
print sorted_x  
#[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]  
sorted_x = sorted(x.iteritems(), key=lambda x : x[1], reverse=True)  
print sorted_x  
#[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]  
  
#包含字典dict的列表list的排序方法与dict的排序类似,如下:  
x = [{‘name‘:‘Homer‘, ‘age‘:39}, {‘name‘:‘Bart‘, ‘age‘:10}]  
sorted_x = sorted(x, key=operator.itemgetter(‘name‘))  
print sorted_x  
#[{‘age‘: 10, ‘name‘: ‘Bart‘}, {‘age‘: 39, ‘name‘: ‘Homer‘}]  
sorted_x = sorted(x, key=operator.itemgetter(‘name‘), reverse=True)  
print sorted_x  
#[{‘age‘: 39, ‘name‘: ‘Homer‘}, {‘age‘: 10, ‘name‘: ‘Bart‘}]  
sorted_x = sorted(x, key=lambda x : x[‘name‘])  
print sorted_x  
#[{‘age‘: 10, ‘name‘: ‘Bart‘}, {‘age‘: 39, ‘name‘: ‘Homer‘}]  
sorted_x = sorted(x, key=lambda x : x[‘name‘], reverse=True)  
print sorted_x  
#[{‘age‘: 39, ‘name‘: ‘Homer‘}, {‘age‘: 10, ‘name‘: ‘Bart‘}] 

以上是关于python 字典排序的主要内容,如果未能解决你的问题,请参考以下文章

python 字典排序

python怎么对字典进行排序

python中列表排序,字典排序,列表中的字典排序

python中字典的排序

字典排序

python字典排序