如何保存具有元组键的字典

时间:2019-06-01 00:34:09

标签: python dictionary save tuples

我想保存在键上有元组的字典。

我尝试了pickle,ujson,json来保存字典。他们都没有工作。

字典有:

dictionary = {(-30, -29, -72, -71): [[-29.99867621124457, -71.75349423197208, 220], [-29.996964568219873, -71.7521560207641, 220], [-29.99696437241995, -71.7507330056961, 220], [-29.99761665426199, -71.75016101067708, 220]]}

我尝试过:

with open('depth_echo.txt', 'w') as file:
    file.write(ujson.dumps(dictionary)

import json
a, b, c = "abc"
data = {(1,2,3):(a,b,c), (2,6,3):(6,3,2)}
on_disk = json.dumps(data.items())

2 个答案:

答案 0 :(得分:1)

将字典写为字符串

 with open(r'test.txt','w+') as f:
     f.write(str(dictionary))

使用eval

阅读
dic = ''
with open(r'test.txt','r') as f:
         for i in f.readlines():
            dic=i #string
dic = eval(dic) # this is orignal dict with instace dict

答案 1 :(得分:0)

您应该使用ujson,这很适合满足您的需求。我刚试过,它工作正常。如果使用json,则会出现以下错误:

  

TypeError:键必须为str,int,float,bool或None,而不是元组

import ujson

d = {(-30, -29, -72, -71): [[-29.99867621124457, -71.75349423197208, 220], [-29.996964568219873, -71.7521560207641, 220], [-29.99696437241995, -71.7507330056961, 220], [-29.99761665426199, -71.75016101067708, 220]]}

# save dictionary
with open('depth_echo.txt', 'w') as file:
    file.write(ujson.dumps(d))

请确保您安装了ujson,因为它不属于Python标准库:

pip install ujson