Saya ingin menyimpan kamus yang memiliki Tuple pada kunci.

Saya mencoba acar, ujson, json untuk menyimpan kamus. Semua dari mereka tidak bekerja.

Kamus memiliki:

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]]}

Saya mencoba:

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
Dong-gyun Kim 1 Juni 2019, 03:34

2 jawaban

Jawaban Terbaik

Tulis kamus sebagai string

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

Baca menggunakan 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
5
sahasrara62 1 Juni 2019, 00:46

Anda harus menggunakan ujson, ini sesuai untuk mengatasi apa yang Anda inginkan. Saya baru saja mencobanya dan berfungsi dengan baik. Jika Anda menggunakan json Anda akan mendapatkan kesalahan berikut:

TypeError: kunci harus str, int, float, bool atau None, bukan Tuple

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))

Pastikan Anda menginstal ujson karena ini bukan bagian dari pustaka standar Python:

pip install ujson
0
lmiguelvargasf 1 Juni 2019, 00:51