2017-10-21 44 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 
相關問題