One - One Code All

Blog Content

python字典排序以及将JSON数据原序转为字符串

Python   2011-03-07 23:05:08

最好是采用 OrderedDict + json.dumps方案
1. 在存储 content 的时候就使用 OrderedDict 而非用默认的 dict

from collections import OrderedDict
content = OrderedDict();
content['id'] = "evt_ugB6x3K43D16wXCcqbplWAJo"
content['created'] = 1440407501
jcont = json.dump(content);

# {"id":"evt_ugB6x3K43D16wXCcqbplWAJo","created":1440407501}
# type(jcont) #

这样得出的最终的 dict 从头到尾都是有序的, OrderedDict 其实可以看做是 dict 的一个子类,强行保留了其字典序,但是这样消耗的资源要更多。

2. 如果要重新转化为 json 格式但是仍要保证其已有顺序需要在 json.loads() 中使用参数 object_pairs_hook
jod = json.loads(jcont, object_pairs_hook=OrderedDict);
type(jod) #

这样才是一个完整的保证出入有序的方案。

3.把字典转化成list或者tuple,把字典每一对键值转化为list中的两位子list或者子tuple再输出.

x={2:1,3:4,4:2,1:5,5:3}
import operator
sorted_x=sorted(x.items(),key=operator.itemgetter(0))#按照item中的第一个字符进行排序,即按照key排序
res = dict(sorted_x)

字典始终都按照key从小到大排序,与定义过程无关,转化为list嵌套tuple这里也依然按着key排序

x={2:1,3:4,4:2,1:5,5:3}
import operator
sorted_x=sorted(x.items(),key=operator.itemgetter(1))#这里改为按照item的第二个字符排序,即value排序
res = dict(sorted_x)

字典的顺序依旧不变,但转化为list嵌套tuple格式之后,完成了按照value排序的操作

4.列表排序

list.sort(cmp=None, key=None, reverse=False)

cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
该方法没有返回值,但是会对列表的对象进行排序。



上一篇:python的dataframe重建索引reset_index(drop=True)
下一篇:pandas的dataframe合并concat,append

The minute you think of giving up, think of the reason why you held on so long.