2014-05-06 157 views
-6

我是Python的新手,我看過很多例子,但不是很好的例子總結。以下是我想完成的4件事情。謝謝你的幫助。在Python中對字典進行排序

mydict = {'carl':40, 
      'alan':2, 
      'bob':1, 
      'danny':3} 

我想用下面的訪問字典元素:

for key in sorted(mydict.keys()): 
    print(key, mydict[key]) 

我如何得到以下輸出:

案例1:(按鍵升序)

alan 2 
bob 1 
carl 40 
danny 3 

案例2 :(按鍵降序)

danny 3 
carl 40 
bob 1 
alan 2 

例3:(由值升序)

bob 1 
alan 2 
danny 3 
carl 40 

情況4:(由值降序)

carl 40 
danny 3 
alan 2 
bob  1 
+3

讓你的眼睛向右轉一點。你會發現幾個回答這個問題的問題。 – devnull

+1

@devnull我一直想知道StackOverflow搜索如何糟糕,但在邊欄中總是有這麼多非常相關的'相關'問題。 –

+0

@AlexThornton我同意搜索不僅是壞的,而且是壞的。然而,相關的「相關」問題出現在右邊的事實表明相同的問題被反覆詢問。 – devnull

回答

1

參見the documentation for sorted

升序通過鍵:

for key, value in sorted(mydict.items()): 
    pass 

通過鍵降序:

for key, value in sorted(mydict.items(), reverse=True): 
    pass 

升序由值:

def get_value(item): 
    return item[1] 

for key, value in sorted(mydict.items(), key=get_value): 
    pass 

由值降序:

for key, value in sorted(mydict.items(), key=get_value, reverse=True): 
    pass 

如果需要,也可以使用key=lambda x: x[1]而不是定義get_key函數。

0
d = {'carl':40, 
     'alan':2, 
     'bob':1, 
     'danny':3} 

ks = sorted(d.keys()) # sort keys 
for key in ks:# key ascending 
print(key, d[key]) 


for key in ks[::-1]: #key descending 
    print(key, d[key]) 


vs= sorted(d, key=d.get) # sort keys by values 
for key in vs: # values ascending 
    print(key, d[key]) 


for key in vs[::-1]: # values descending 
    print(key, d[key]) 
相關問題