在Python中排序Dict

时间:2014-05-06 19:52:27

标签: python sorting dictionary

我是Python的新手,我看过很多例子但不是很好的例子摘要。以下是我想要完成的4件事。谢谢你的帮助。

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

我想使用以下内容来访问dict元素:

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

2 个答案:

答案 0 :(得分: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功能。

答案 1 :(得分: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])