как выполнить форматирование строк внутри словаря?

#python #json #pandas #dataframe

Вопрос:

допустим, у меня есть полезная нагрузка, которую я использую, чтобы попасть в мой API

 payload = json.dumps({"from_date":"2019-10-10",
                      "from_date":"2019-10-12",
                     "pg_no": 1,
                     "idx": "fsdf"})
 

но я хотел сделать его pg_no значение динамическим, используя для цикла, т. е.

 payload = json.dumps({"from_date":"2019-10-10",
                          "from_date":"2019-10-12",
                         "pg_no": {},
                         "idx": "fsdf"})

for i in range(1,5):
   payload.format(i)
 

получение этой ошибки

 KeyError                                  Traceback (most recent call last)
<ipython-input-7-5b565a97da5e> in <module>
      1 for i in range(1,5):
----> 2        payload.format(i)

KeyError: '"from_date"'
 

Комментарии:

1. Каков ваш желаемый результат?

2. Вы ищете '{}' не {}

Ответ №1:

сначала в вашем словаре вы используете тот же ключ from_data , который будет присутствовать там только последним. вторая основная проблема заключается в том, что { скобки format используют эту переменную места, если вы хотите проанализировать один сингл { , то вам нужно использовать {{ в строке . так просто поместите значение в словарь, а затем преобразуйте его в строку, подобную этой

 data = {'rom_date':'2019-10-10',
        'fom_date':'2019-10-12',
                     'pg_no': {},
                     'idx': 'fsdf'}

for i in range(1,5):
    data['pg_no'] = i 
    print(json.dumps(data))