【问题标题】:Reading dictionary from text file converts integer keys to string: Python从文本文件中读取字典将整数键转换为字符串:Python
【发布时间】:2014-07-27 23:49:07
【问题描述】:

我有一个文件,其中包含来自 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

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

【问题讨论】:

    标签: python file dictionary


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是完全正常的。位置只能调用 json 字符串中的数组(您称其为整数)。在你的情况下。如果您查看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]}。因此,当您尝试访问该值时的字符串键。

      【讨论】:

        猜你喜欢
        • 2019-05-24
        • 2018-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-26
        • 1970-01-01
        • 2015-09-25
        相关资源
        最近更新 更多