0

我有这个 collections.Counter

counter_obj
Counter({('A', 'B'): 170,
         ('C', 'D'): 650})

尝试将元组格式的键转换为字符串,而不是使用 json.dumps 函数转换为 json

dict = {str(k):v for k,v in counter_obj.items()}
json1 = json.dumps(dict)

当我打印 json 时,我得到了这个\。反斜杠来自如何删除它们并获得整洁的 json 格式?

'{"(\'A\', \'B\')": 170, "(\'C\', \'D\')": 650}' 
4

3 回答 3

1

他们不在那里。之所以显示它们,是因为您获得了 json 字符串的表示形式,而不是其字符串版本。

演示:

>>> json1
'{"(\'A\', \'B\')": 170, "(\'C\', \'D\')": 650}'
>>> print(repr(json1))
'{"(\'A\', \'B\')": 170, "(\'C\', \'D\')": 650}'
>>> print(json1)
{"('A', 'B')": 170, "('C', 'D')": 650}
于 2020-07-20T13:48:32.293 回答
0

看起来是因为您的元组的每个元素都是一个字符串,而您正在将整个元组转换为一个字符串

我自己对 json.dumps 函数不太熟悉,但是在将它传递给 dict 时,你能不能把它作为一个元组保留?

于 2020-07-20T13:39:20.513 回答
0

我建议你看看str(('A', 'B'))产生了什么,因为它会有反斜杠来保留单引号

于 2020-07-20T13:44:57.120 回答