развернуть список для полезной нагрузки - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу развернуть элементы списка в полезной нагрузке. Ниже приведено решение, которое я придумала, но я не уверена, что это лучший подход, и я почти уверена, что его можно определенно улучшить:

import ast

texts = ["text1",
         "text2",
         "text3"]

attachments = []

for i, text in enumerate(texts):
    attachment = ''.join(str({
        "text": "some text",
        "action": [
            {
                "text": text,
                "value": str(i+1)
            }
        ]}))
    attachments.append(attachment)

payload = [ast.literal_eval(attachments[i]) for i in range(len(attachments))]

ожидаемый результат:

[{'text': 'some text', 'action': [{'text': 'text1', 'value': '1'}]}, {'text': 'some text', 'action': [{'text': 'text2', 'value': '2'}]}, {'text': 'some text', 'action': [{'text': 'text3', 'value': '3'}]}]

1 Ответ

1 голос
/ 29 апреля 2019

Вы можете использовать понимание списка:

texts = [
    'text1',
    'text2',
    'text3',
]
payload = [
    {
        'text': 'some text',
        'action': [
            {
                'text': text,
                'value': str(i+1),
            }
        ]
    }
    for i, text
    in enumerate(texts)
]
print(payload)

выход

[{'text': 'some text', 'action': [{'text': 'text1', 'value': '1'}]}, {'text': 'some text', 'action': [{'text': 'text2', 'value': '2'}]}, {'text': 'some text', 'action': [{'text': 'text3', 'value': '3'}]}]
...