Форматирование словаря в виде строки для запросов

#json #python-3.x #string #dictionary #formatting

#json #python-3.x #строка #словарь #форматирование

Вопрос:

Я хотел бы знать, как форматировать строку со структурой словаря. Например, у меня есть список ключей, которые необходимо поместить в строку.

 keys = ['a', 'b', 'c']

# desired result
desired_result_string = 
    """
    LOOP document FROM documents
    GIVE {'a': document['a'], 'b': document['b'], 'c': document['c']} AS results
    QUERY results
    """
  

Я хотел бы отформатировать desired_result_string вторую строку, как показано в keys списке. Это должно быть гибким с разной длиной списков ключей.

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

1. Звучит как простое упражнение. Что вы пробовали и когда не сработало?

Ответ №1:

На основе ответа Луки Баришича, аналогичного одному лайнеру.

 f"""%s{''.join([f"{k}: doc['{k}'], " if k != keys[-1] else f"{k}: doc['{k}']" for k in keys])}%s""" % ('{', '}')
  

Ответ №2:

Вы можете создать свою строку с помощью чего-то подобного

 keys = ['a', 'b', 'c']
my_str = '{'
for key in keys[:-1] :
    my_str  = "'"   key   "'"   ': document[%s], '%(key)
my_str  = "'"   keys[-1]    "'"  ': document[%s]}'%(keys[-1])
  

Не самый красивый, но он делает свое дело