Saving dictionary whose keys are tuples with json, python

前端 未结 4 2480
醉话见心
醉话见心 2021-02-20 10:37

I am writing a little program in python and I am using a dictionary whose (like the title says) keys and values are tuples. I am trying to use json as follows

im         


        
相关标签:
4条回答
  • 2021-02-20 10:50

    For Python 3* users: in addition to @Martijn Pieters answer,

    dictonary.iteritems() is not valid, replace it with dictionary.items() :

    json.dumps({str(k): v for k, v in data.items()})
    
    0 讨论(0)
  • 2021-02-20 10:52

    You'll need to convert your tuples to strings first:

    json.dumps({str(k): v for k, v in data.iteritems()})
    

    Of course, you'll end up with strings instead of tuples for keys:

    '{"(1, 2, 3)": ["a", "b", "c"], "(2, 6, 3)": [6, 3, 2]}'
    
    0 讨论(0)
  • 2021-02-20 11:03

    If you want to load your data later on you have to postprocess it anyway. Therefore I'd just dump data.items():

    >>> 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())
    >>> on_disk
    '[[[2, 6, 3], [6, 3, 2]], [[1, 2, 3], ["a", "b", "c"]]]'
    >>> data_restored = dict(map(tuple, kv) for kv in json.loads(on_disk))
    >>> data_restored
    {(2, 6, 3): (6, 3, 2), (1, 2, 3): (u'a', u'b', u'c')}
    
    0 讨论(0)
  • 2021-02-20 11:09

    You can use ujson module. ujson.dumps() accepts tuples as keys in a dictionary. You can install ujson by pip.

    0 讨论(0)
提交回复
热议问题