如何把数组转换成json数据?

a=[(121, 900), (124, 500), (123, 400), (126, 100)]

b={121: 900, 124: 500, 123: 400, 126: 100}

目标:a转换成b

但是,我用下面的方法:

 for i in a:
    n[i[0]]=i[1]
 print n
 

结果是这样:{121: 900, 123: 400, 124: 500, 126: 100}

不是原来的顺序了,这个问题如何解决?

阅读 13.6k
9 个回答
from collections import OrderedDicet
dic=OrderedDict()   #用有序字典应该可以实现

我不会python,还是想说两句

上面的结果只需要一句就可以了

print dict(a)

字典是无序的

我不会python,还是想说两句。

python里for...in 是否会按顺序?对象的属性是否有顺序?

我不会python,还是想说两句。

python的字典就是那样的,次序随机。

我不会python,还是想说两句。
python字典是无序的

其实在新的python v3中会默认地保证键插入的有序性,但是这个特性并不保证在未来的版本中不做改变,所以还是:

from collections import OrderedDict
新手上路,请多包涵

import collections

b = collections.OrderedDict(dict(a))

我不会python,还是想说两句。

python的字典是无序的,转换成json格式的时候,一般用json.dumps(dict)完成。这个地方可以根据key来排序,只要加一个参数sort_keys=True,即json.dumps(dict,sort_keys=True),返回的就是排序后字典的json格式,而原本的字典本身就是无序的。
楼主把有序数组转化为有序字典的话,本身就没有意义,因为字典获取value是要通过key的。不过如果你说用items()取出全部value再按顺序访问的话,我也赞同,因为Python的运用本就是没有限制的。

在Python中,dict这个数据结构由于hash的特性,是无序的。而collections的OrderedDict可以为我们提供有序字典,会根据加入的顺序,决定字典中的顺序。
使用方法:

# -*- coding: utf-8 -*-
from collections import OrderedDict
items = (
    ('A', 1),
    ('B', 2),
    ('C', 3)
)
regular_dict = dict(items)
ordered_dict = OrderedDict(items)
print 'Regular Dict:'
for k, v in regular_dict.items():
    print k, v
print 'Ordered Dict:'
for k, v in ordered_dict.items():
    print k, v
# Result:
Regular Dict:
A 1
C 3
B 2
Ordered Dict:
A 1
B 2
C 3

转载自:http://www.jb51.net/article/4...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题