dict to str как преобразовать с возможностью изменения строки

Как преобразовать словарь в строку, заменив при этом запятую на точку с запятой. Пример: {key: value, key: value} на входе, на выходе нужно 'key: value; key: value'

json.dumps(dict) и json(loads) пробовала, но json.loads не работает когда я делаю replace (',',';') по строке из json.dumps(dict). json.dumps(dict) - вывод не в той кодировке, преобразовать в python формат не смогла Как преобразовать так, чтобы я могла внести изменения в эту строку, сохранив при этом кодировку


Ответы (3 шт):

Автор решения: Alpensin
d = {1: 2, 3: 4}
s = "; ".join(f"{k}:{v}" for k, v in d.items())
# Результат '1:2; 3:4'
→ Ссылка
Автор решения: NIKITA TALANOV

JSON и словарь Python - это не одно и то же, поэтому вам методы json тут и не нужны. Вот, к примеру, самый простой вариант решения вашей задачи:

my_dict = {
    "key1": "value1",
    "key2": "value2"
}
my_str = str(my_dict) # создаем строку, содержащую наш словарь
formated_str = my_str.replace("{", "").replace("}", "").replace(",", ";") 
# убираем фигурные скобки и заменяем запятую на точку с запятой
print(formated_str)

либо таким способом:

my_dict = {
    "key1": "value1",
    "key2": "value2"
}
my_str = "" #создаем пустую строку
for key, value in my_dict.items(): # в цикле перебираем пары ключ: значение
    my_str = my_str + key + ": " + value + "; " # добавляем к строке запись нужного формата
print (my_str)
→ Ссылка
Автор решения: Dmitry

все просто

my_dict = {
    "key1": "value1",
    "key2": "value2"
}

str(my_dict).replace(",", ";")[1:-1] 

# вывод
'key1': 'value1'; 'key2': 'value2'

UPD (согласно комментарию от @GrAnd)
Метод описанный выше не является универсальным и скорей всего не пройдет проверку и тестирование. Отсюда и вытекают некие требования к задающему вопрос:

  1. Входные данные
  2. Выходные данные

Те входные и выходные данные, что указаны не являются корректными (key - уникальное значение) и берутся как пример.

Какая в итоге логика нужна? поразмышляем.

Вопрос: преобразовать словарь в строку с возможностью изменения строки.
Строка - это изменяемый тип данных, и изменения можно внести всегда. Словарь в строку, не проблема. Указаний на то, что будет содержать словарь нет, примеров реальных входных данных нет. Данный метод "посыпется", как только появится запятая в данных. Или не посыпется? Нужно, ли, все запятые заменить на точку с запятой.

Следующее. Если, же, нужно заменить запятые между парами ключ-значение, то естественно, необходимо выбрать метод, который так или иначе перебирает словарь.

Обычный for словаря, где d.items() - список кортежей:

string = ""
for key, value in d.items(): 
  string += f"{key}:{value};"

Можно и дальше пойти и использовать collections, только зачем. Вот и возникает вопрос о входных и выходных данных.

Можно и дальше смотреть на тему типов данных. ТС использует json. Вопрос: почему? Данные приходят в этом виде? Тогда, до преобразования в словарь это последовательность символов. Может на этом этапе обрабатывать?

и так далее

→ Ссылка