繁体   English   中英

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

[英]Reading dictionary from text file converts integer keys to string: Python

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

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

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

这是完全正常的。 只有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]} 因此,当您尝试访问该值时,字符串键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM