- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我函数的返回值类型是OrderedDict
,
现在我想把这个写在文件上:
这是我的代码:
mainDict = OrderedDict([('a',1),('b',2),('c',3),('d',[4,5,6])])
with open(outFileName, 'w', encoding='utf-8') as outFile :
outFile.write(ujson.dumps(mainDict, indent=4))
我希望它能保持文件中字典的顺序,但它搞混了。
是不是因为使用了ujson.dumps
?以及如何在输出文件中保留 OrderedDict
的顺序?
最佳答案
ujson.dumps
的sort_keys
参数ujson
的行为如下:
sort_keys=None
(如果省略则为默认值)- 以实现定义的顺序转储 dict 键,每次启动时可能不同(但速度很快)sort_keys=True
- 在转储之前对字典键进行排序sort_keys=False
- 保留 dict.items()
因此,要使用 ujson
保留 OrderedDict
的顺序,您需要 sort_keys=False
。
这是您可以检查它的方式:
import sys
import ujson
order = None
if len(sys.argv) == 2:
order = bool(int(sys.argv[1]))
mainDict = OrderedDict([('c',3),('b',2),('a',1)])
sys.stdout.write(ujson.dumps(mainDict, sort_keys=order))
测试:
$ python order.py # sort_keys=None
{"c":3,"a":1,"b":2}
$ python order.py # sort_keys=None
{"b":2,"c":3,"a":1}
$ python order.py 1 # sort_keys=True
{"a":1,"b":2,"c":3}
$ python order.py 0 # sort_keys=False
{"c":3,"b":2,"a":1}
请注意,与 ujson
不同,内置 json
模块使用 sort_keys=None
和 sort_keys 保留键顺序=假
。
另请注意,尽管可以使用这些实现(ujson
和 json
)保留键顺序,但它是非标准 JSON。参见 json.org :
An object is an unordered set of name/value pairs.
关于python - 我想用 ujson 保持 OrderedDict 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215872/
我正在尝试将 SpaCy 添加为我的 Python Lambda 的依赖项。为此,我使用 pip3 install spacy --no-deps -t 将 SpaCy 作为独立依赖项安装在名为 de
我正在尝试使用 Poetry 在我的 Windows 笔记本电脑上安装 RASA 框架并从源代码构建。使用 pip 对我没有帮助,因为我永远无法安装 Tensorflow,它与 RASA 一起提供。
我正在使用 ujson 将字典转换为 json。当我运行以下行时: ujson.dumps({'key':'val\1'}) 我得到以下结果: [{"key": "val\\1"}] 虽然我期望/希望
我想使用 upickle library 的 ujson从 json 文档中提取可选字符串。在某些文档中 json 字段存在,而在其他文档中不存在。 当访问该字段并且该字段不存在时,我得到一个 NoS
数组 x = np.array([1,2,3,4]) ujson.编码 ujson.encode(x, ensure_ascii=False, double_precision=-1) 给我错误 Ov
我已经使用命令 pip install ujson 安装了 ujson当我尝试运行我的 python 项目时,它返回ImportError: 没有名为 ujson 的模块 操作系统版本:Red Hat
我函数的返回值类型是OrderedDict, 现在我想把这个写在文件上: 这是我的代码: mainDict = OrderedDict([('a',1),('b',2),('c',3),('d',[4
我已经看到曾经可以在 Flask 应用程序中使用 simplejson 作为 JSON 编码器/解码器,如下所示: from simplejson import JSONEncoder, JSONDe
我正在尝试使用 Python3 中的 ujson 模块序列化数字。一些值是 NaN。 当使用标准的 json 模块时,一切正常。 import json json.dumps(float('NaN')
我正在寻找 uJson 或 cJson(最好是前者)的 Windows 64 位二进制版本。它存在吗?如果是这样,你能发布一个链接吗? 或者我是否遗漏了一些东西并且有一些方法可以在 64 位 Wind
我是一名优秀的程序员,十分优秀!