2014-05-06 160 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]) 
相关问题