我有以下形式的原始列表sorteddict
:
["with", 1]
["witches", 1]
["witchcraft", 3]
我希望通过使它成为一个看起来像的JSON对象来生成更清晰的数据:
"Frequencies": {
"with": 1,
"witches": 1,
"witchcraft": 3,
"will": 2
}
不幸的是到目前为止,我只找到了一种手动方式来创建如上所示的数据,并且想知道是否有更为雄辩的生成数据的方式而不是我的凌乱脚本。我到了需要检索列表中最后一项的位置,并确保在我认为应该寻求建议之前最后一行没有逗号。这就是我所拥有的:
comma_count = 0
for i in sorteddict:
comma_count += 1
with open("frequency.json", 'w') as f:
json_head = "\"Frequencies\": {\n"
f.write(json_head)
while comma_count > 0:
for s in sorteddict:
f.write('\t\"' + s[0] + '\"' + ":" + str(s[1]) + ",\n")
comma_count -= 1
f.write("}")
我使用了json.JSONEncode.encode()
,我认为这就是我所寻找的内容,但最终发生的事情"Frequencies"
会被添加到每个s[0]
项目中。有任何清理代码的想法吗?
答案 0 :(得分:4)
您需要从当前的dict中创建嵌套的dict,并使用json.dumps
。不确定sorteddict的工作原理,但是:
json.dumps({"Frequencies": mySortedDict})
应该有效。
另外,你说你想要json编码的东西,但你的例子是无效的json。所以我假设你真的想要合法的json。
以下是一些示例代码:
In [4]: import json
In [5]: # No idea what a sorteddict is, we assume it has the same interface as a normal dict.
In [6]: the_dict = dict([
...: ["with", 1],
...: ["witches", 1],
...: ["witchcraft", 3],
...: ])
In [7]: the_dict
Out[7]: {'witchcraft': 3, 'witches': 1, 'with': 1}
In [8]: json.dumps({"Frequencies": the_dict})
Out[8]: '{"Frequencies": {"with": 1, "witches": 1, "witchcraft": 3}}'
答案 1 :(得分:2)
我可能没有正确理解你 - 但你只是想将[word,frequency]列表列入字典吗?
frequency_lists = [
["with", 1],
["witches", 1],
["witchcraft", 3],
]
frequency_dict = dict(frequency_lists)
print(frequency_dict) # {'with': 1, 'witches': 1, 'witchcraft': 3}
如果您想将其写入文件:
import json
with open('frequency.json', 'w') as f:
f.write(json.dumps(frequency_dict))