在Python中,如何轻松地从字典中检索排序的项目?

时间:2020-03-05 18:51:03  来源:igfitidea点击:

与列表不同的字典没有顺序(并且没有'sort'属性)。因此,我们不能依赖于首次添加时以相同顺序获得项目。

遍历包含字符串作为键值的字典并按键升序检索它们的最简单方法是什么?

例如,我们有以下内容:

d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}

我想按照键排序的以下顺序打印关联的值:

this is a
this is b
this is c

解决方案

回答

此代码段将这样做。如果我们要经常这样做,则可能需要使用" sortkeys"方法或者类似的方法,以使其在眼睛上更容易使用。

keys = list(d.keys())
keys.sort()
for key in keys:
    print d[key]

编辑:dF的解决方案更好-我忘记了有关sorted()的所有知识。

回答

我们是说需要按键值排序的值吗?
在这种情况下,应该这样做:

for key in sorted(d):
    print d[key]

编辑:更改为使用sorted(d)而不是sorted(d.keys()),谢谢Eli!

回答

或者更短一点

for key, value in sorted(d.items()):
    print value

回答

>>> d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
>>> for k,v in sorted(d.items()):
...     print v, k
... 
this is a a
this is b b
this is c c

回答

d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
ks = d.keys()
ks.sort()
for k in ks:
    print "this is " + k

回答

for key in sorted(d):
  print d[key]

回答

我们还可以按值对字典进行排序并控制排序顺序:

import operator

d = {'b' : 'this is 3', 'a': 'this is 2' , 'c' : 'this is 1'}

for key, value in sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True):
    print key, " ", value

输出:
b这是3
这是2
c这是1