Вы передаете словарь в функцию, которая ожидает строку.
Синтаксис:
{"('Hello',)": 6, "('Hi',)": 5}
является как действительный словарь Python буквальным и действительный объект JSON буквальным. Но loads
не принимает словарь; он берет строку, которая затем интерпретируется как JSON и возвращает результат как словарь (или строку или массив или число, в зависимости от JSON, но обычно словарь).
Если передать эту строку loads
:
'''{"('Hello',)": 6, "('Hi',)": 5}'''
тогда он будет возвращать словарь, который выглядит очень похож на тот, который вы пытаетесь перейти к нему.
Вы также можете использовать схожесть JSON литералов объектов в Python словарей литералов, делая это:
json.loads(str({"('Hello',)": 6, "('Hi',)": 5}))
Но в любом случае вы бы просто получить обратно словарь, который вы передаете в, так что я Не знаю, что это будет сделано. Какова ваша цель?
'json.loads ('' '{" (' Hello ',) ": 6," (' Hi ',) ": 5}' '')'. 'S' в' load' обозначает строку. – BallpointBen
Похоже, вы уже имеете дело с фактическим словарем, а не с строкой. Как вы читаете данные, которые вы сбрасывали? – jorijnsmit