1. 程式人生 > >Python collections.OrderedDict解決dict元素順序問題

Python collections.OrderedDict解決dict元素順序問題

字符 叠代 div 元素 www. 插入 問題 span 字符串

編程中遇到個問題,python json.loads時元素順序可能會發生變化

這個對於一些需要使用元素順序來做一些策略的代碼來說是致命的。

在網上查了查,結合自己的知識總結一下。


使用dict時,Key是無序的。在對dict做叠代時,我們無法確定Key的順序。

如果要保持Key的順序,可以用OrderedDict。

OrderedDict的Key會按照插入的順序排列,不是Key本身排序

 1 #coding=utf-8
 2 
 3 import json
 4 import collections
 5 
 6 my_dict = {}
 7 my_list = ["測試", "1324
", "r4ge5"] 8 9 for i in my_list: 10 my_dict[i] = my_list[my_list.index(i)] 11 12 print "str1原串:" 13 str1 = json.dumps(my_dict, ensure_ascii=False) 14 print str1 15 16 print "對str1字符串進行loads後的結果:" 17 data_js = json.loads(str1) 18 print json.dumps(data_js, ensure_ascii=False).encode("utf8") 19
20 print "對str1字符串進行loads後的結果(使用OrderedDict):" 21 data_js = json.loads(str1, object_pairs_hook=collections.OrderedDict) 22 print json.dumps(data_js, ensure_ascii=False).encode("utf8")

執行結果:

str1原串:
{"測試": "測試", "r4ge5": "r4ge5", "1324": "1324"}
對str1字符串進行loads後的結果:
{"r4ge5": "r4ge5", "1324": "1324
", "測試": "測試"} 對str1字符串進行loads後的結果(使用OrderedDict): {"測試": "測試", "r4ge5": "r4ge5", "1324": "1324"}

更多可以參考:

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001411031239400f7181f65f33a4623bc42276a605debf6000

Python collections.OrderedDict解決dict元素順序問題