python字典——按特定顺序排序

情景:

朋友的项目遇到这样一个问题,字典里面套很多小字典。要一次性的获取大字典里面小字典的值,而且,大字典的键和小字典的键要按指定的顺序进行排序。

难点:

字典里面一次性获取里面的值,很容易。可以用for循环遍历大字典里面的key1,value1,因为value1是小字典,我再对value1进行遍历key2,value2,这样就拿到的value2的值。

但是按指定的顺序进行排序。这个就难了。因为字典是无序的。
当时考虑到了用有序字典OrderedDict,但是这个要求按你插入的顺序进行排序。而我拿到的字典本来就是无序的。怎么做?

解决办法:

提前把你要的字典的key写入一个列表。遍历列表,如果key在字典里面,就插入OrderDict。

代码:

#python3
from collections import OrderedDict
row = dict(a=1,b=2,c=3)
monitorItems = OrderedDict()
alist = ['b','c','a']
for key in alist:
    if row.get(key) is not None:#python2用的是row.has_key(key)
        monitorItems[key] = row.get(key)
#print(dict(monitorItems))#这一步前边我之前画蛇添足,加了个dict,谢谢 越 发现了这个问题。如果再前面加dict,会导致字典重新变成无序状态。
print(monitorItems) #这个本身就是字典,是有序的,可以直接操作。

answer

OrderedDict([('b', 2), ('c', 3), ('a', 1)])

参考

http://www.cnblogs.com/xiami303/archive/2012/08/27/2658904.html

你可能感兴趣的:(python,python问题集)