2017-10-21 73 views
2

我必须按值排序字典并返回一个字符串。排序字典并创建一个字符串

d = {'K': 1000, 'M': 1200, 'R': 600, 'T': 400} 
s = sorted(d, key=d.get, reverse=True) 

我也得到:

['M', 'K', 'R', 'T'] 

如何以这种形式与价值返回键?

1. M: 1200 
2. K: 1000 
3. R: 600 
4. T: 400 

回答

2

你必须携带键的值。在这种情况下,排序根据值,只需:

d = {'K': 1000, 'M': 1200, 'R': 600, 'T': 400} 
s = sorted(d.items(), key=lambda x : x[1], reverse=True) 

print(s) 

结果:

[('M', 1200), ('K', 1000), ('R', 600), ('T', 400)] 

和用于显示,在排序的项目,其中解压缩在i,(k,v)使用enumerate起始于1i是索引,kv是字典的键/值)

for i,(k,v) in enumerate(sorted(d.items(), key=lambda x : x[1], reverse=True),1): 
    print("{}. {}: {}".format(i,k,v)) 

PRI NTS:

1. M: 1200 
2. K: 1000 
3. R: 600 
4. T: 400 
1

你可以试试这个:

d = {'K': 1000, 'M': 1200, 'R': 600, 'T': 400} 
for i, (a, b) in enumerate(sorted(d.items(), key=lambda x:x[-1], reverse=True)): 
    print("{}. {}: {}".format(i+1, a, b)) 

输出:

1. M: 1200 
2. K: 1000 
3. R: 600 
4. T: 400 
1

通过排序的值你循环S的(无论是用for循环或低于理解)并使用它们来访问字典的值。

[print(i + ": " + str(d[i])) for i in s] 

OUTPUT:

M: 1200 
K: 1000 
R: 600 
T: 400 
2

你可以做以下

#1 - Sort your keys first 

In [54]: d_sorted = sorted(d,key=d.get,reverse=True) 

#2 - Once done, use enumerate and use the value in your sorted list to get the 
#value of your dictionary 

In [55]: for i,r in enumerate(d_sorted): 
    print(str(i+1)+'.',r+':',d[r]) 

#results 
1. M: 1200 
2. K: 1000 
3. R: 600 
4. T: 400 
相关问题