Python 用json编码元组的最佳方法

Python 用json编码元组的最佳方法,python,json,Python,Json,在python中,我有一个将元组映射到元组列表的字典。e、 g {(1,2):[(2,3)、(1,7)]} 我希望能够使用javascript对这些数据进行编码,所以我研究了json,但看起来键必须是字符串,所以我的元组不能用作键 处理这个问题的最佳方法是将其编码为“1,2”,然后将其解析为javascript上需要的内容吗?或者有没有更聪明的方法来处理这个问题。它仅仅是一个二维数组吗?然后您可以使用整数作为键我的建议是: { "1": [ { "2": [[2,3],[1,7]

在python中,我有一个将元组映射到元组列表的字典。e、 g

{(1,2):[(2,3)、(1,7)]}

我希望能够使用javascript对这些数据进行编码,所以我研究了json,但看起来键必须是字符串,所以我的元组不能用作键


处理这个问题的最佳方法是将其编码为“1,2”,然后将其解析为javascript上需要的内容吗?或者有没有更聪明的方法来处理这个问题。

它仅仅是一个二维数组吗?然后您可以使用整数作为键

我的建议是:

{ "1": [
        { "2": [[2,3],[1,7]] }
       ]
}

它仍然在解析,但这取决于您如何使用它,在这种形式下可能更容易。

在JSON中不能使用数组作为键。你能做的最好的事情就是对它进行编码。对不起,但确实没有其他明智的方法。

< P>你可以考虑说< /P>
{"[1,2]": [(2,3),(1,7)]}
然后,当您需要获取值时,您可以将键本身解析为JSON对象,所有现代浏览器都可以使用内置的
JSON.parse
方法(我使用
jQuery.each
在这里进行迭代,但您可以使用任何东西):

另一方面,您可能希望以不同的方式构造对象,例如

{1: {2: [(2,3),(1,7)]}}
因此,与其说

myjson[1,2] // doesn't work
可以说,这是无效的Javascript语法

myjson[1][2] // returns [[2,3],[1,7]]

如果您的键元组是真正的整数对,那么最简单、可能也是最直接的方法就是您所建议的。。。。将它们编码为字符串。您可以在一行程序中执行此操作:

>>> simplejson.dumps(dict([("%d,%d" % k, v) for k, v in d.items()]))
'{"1,2": [[2, 3], [1, 7]]}'
这将为您提供一个javascript数据结构,然后您可以拆分该结构的键以再次获取点:

'1,2'.split(',')

二维数组在python中很笨拙,否则可能会有用。感谢编辑nosklo。。。每个人都需要一个好的编辑器:-)对于这个特定的例子,tuple('1,2'.split(','))。如果这个问题的例子是标准的,你可能会想要tuple(int(s)表示“1,2”中的s。split(“,”)。感谢嵌套字典的想法!我不会想到的。不确定哪种方法对我更有效,但似乎是个好主意,谢谢!
'1,2'.split(',')