fw = open("data/step3_route.js", "w", encoding='utf-8') fw.write("var step3_route = [\n") for i in range(1, len(ls)): ls[i] = dict(zip(ls[0], ls[i])) a = json.dumps(ls, sort_keys=True, indent=4, ensure_ascii=False) print(a) fw.write(a) fw.close()File "E:\Work\Python\work_longsun\longsun_data1\step3_route.py", line 37, in process a = json.dumps(ls, sort_keys=True, indent=4, ensure_ascii=False) File "C:\Users\24788\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 234, in dumps return cls( File "C:\Users\24788\AppData\Local\Programs\Python\Python39\lib\json\encoder.py", line 201, in encode chunks = list(chunks) File "C:\Users\24788\AppData\Local\Programs\Python\Python39\lib\json\encoder.py", line 429, in _iterencode yield from _iterencode_list(o, _current_indent_level) File "C:\Users\24788\AppData\Local\Programs\Python\Python39\lib\json\encoder.py", line 325, in _iterencode_list yield from chunks File "C:\Users\24788\AppData\Local\Programs\Python\Python39\lib\json\encoder.py", line 353, in _iterencode_dict items = sorted(dct.items()) TypeError: '<' not supported between instances of 'str' and 'int'
时间: 2023-07-30 15:11:14 浏览: 181
A043FW02 V.8.pdf
这个错误是由于在对字典进行排序时,字典中的键包含了字符串和整数,而在 Python 中字符串和整数不能直接比较所导致的。
要解决这个问题,你可以使用 `key` 参数来指定排序的键。你可以将键转换为字符串类型,并使用这个字符串进行排序。
下面是一个修改后的代码示例:
```python
import json
fw = open("data/step3_route.js", "w", encoding='utf-8')
fw.write("var step3_route = [\n")
for i in range(1, len(ls)):
ls[i] = dict(zip(ls[0], ls[i]))
a = json.dumps(ls, sort_keys=True, indent=4, ensure_ascii=False, key=str)
print(a)
fw.write(a)
fw.close()
```
在这个示例中,我们在 `json.dumps()` 方法中添加了 `key=str` 参数。这将把字典的键转换为字符串类型,以便进行排序。
请注意,你需要将代码中的 `ls` 替换为你实际使用的变量名,并确保 `ls` 中的元素都是字典类型。
通过这样的修改,你应该能够避免该错误并成功将字典转换为 JSON 字符串并写入文件。
阅读全文