从文本文件中读取字典会将整数键转换为字符串:Python

时间:2014-07-27 23:49:07

标签: python file dictionary

我有一个文件,其中包含来自json.dumps(d)的字符串,其中d是最初创建的字典:

   >> d = {1: [1,2,3], 2:[5,6,7], 3:[7,8,9]} # integer keys

当我打开这个文件并将字典放入RAM时:

  >> d = json.loads(open('file.txt', 'r').read())
  >> d[1]
   ## Gives error
  >> d['1']
   ## doesn't give error

我在保存字典时做错了吗?

2 个答案:

答案 0 :(得分:3)

不,你误解了JSON。 JSON对象中的名称​​必须为字符串;即使使用的编程语言可以支持它们,它们也不能是任何其他类型。如果您希望它们在解码后不是字符串,那么您需要在单独的解码器中实现额外的解析。请考虑使用json.JSONDecoderobject_hookobject_pair_hook个参数。

答案 1 :(得分:0)

这是完全正常的。只有json字符串中的数组可以通过position调用(整数调用它)。在你的情况下。如果您查看json.dumps({1: [1,2,3], 2:[5,6,7], 3:[7,8,9]})的输出,您会看到{"1": [1, 2, 3], "2": [5, 6, 7], "3": [7, 8, 9]}。因此,当您尝试访问该值时,字符串键。