【发布时间】:2019-04-12 13:05:25
【问题描述】:
从 Python 脚本读取 JSON 文件时遇到问题。 这是 JSON 文件:
{
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
"f": 6,
"g": 7,
"h": 8,
"i": 9
}
这是我从当前路径打开 JSON 文件并读取与其中的字母关联的每个值的 Python 文件:
with open(os.getcwd() + '/letters.json') as lettersListJSON:
lettersList = json.load(lettersListJSON)
for char in lettersList
print lettersList[char]
我奇怪地得到了这个输出:
1
3
2
5
4
7
6
9
8
为什么这些值是交错的,我怎样才能防止这种情况发生? 我应该用互斥锁锁定变量的访问吗?
【问题讨论】:
-
这并不奇怪.. json.load 返回一个字典,字典没有排序。
-
字典没有顺序。只有 python 3.7 的插入顺序得到保证,而 ipython 3.6 有这个副作用。您不知道它们是如何插入的......所以它可能是插入顺序。如果您希望按键输出按按键排序,请使用
for char in sorted(lettersList): -
可能的欺骗:stackoverflow.com/questions/35609991/…(用于打印排序部分) - 不是 json 如何创建 dict 或 stackoverflow.com/questions/1479649/… 或
-
@ChristianSloper 非常感谢!我不知道 json.load 返回了一个未排序的字典。