Итерация и добавление различных значений из JSON в переменную
Я пытаюсь выполнить итерацию и добавить QId и Answer из полезной нагрузки, желаемый результат должен быть таким 12|Yes&&13|Yes&&14|Yes&&15|Yes&&16|Yes&&17|Yes&&.
Все, что я хочу, это конкатенировать QId и Answer перед сохранением в базу данных. Как я могу этого добиться
Qstans = str(qid)+'|'+ answer+'&&'.join([str(qid)+'|'+(answer) for ran in request.data]) эта строка, которая добавляет значения
вывод, который я получаю
12|Yes12|Yes&&12|Yes&&12|Yes&&12|Yes&&12|Yes&&12|Yes
payload:
0: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 150…}
1: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 151…}
2: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 152…}
3: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 153…}
4: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 154…}
5: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 155…}
6: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 156…}
код здесь:
@api_view(['POST'])
def SaveUserResponse(request):
if request.method == 'POST':
for ran in request.data:
qid = ran.get('QId')
answer = ran.get('Answer')
Qstans = str(qid)+'|'+ answer+'&&'.join([str(qid)+'|'+(answer) for ran in request.data])
print(Qstans)
Вы используете понимание списка в цикле, что является излишним для (как я понимаю) вашей цели. Внутри понимания вы также используете переменные, которые вы назначили в цикле, что приводит к тому, что все значения Q/A равны 12 и "Да" соответственно.
Просто поменяйте местами цикл и используйте:
if request.method == 'POST':
Qstans = '&&'.join(str(ran.get('QId')) + '|' + str(ran.get('Answer')) for ran in request.data)
должно быть достаточно.
Я не смог проверить это, потому что вы не предоставили объект Python, как упоминал mozway в комментариях, но это должно работать с небольшими изменениями (например, добавлением '&&' в случае, если вам это необходимо).
Похоже, что происходит двойная итерация, поэтому вы можете попробовать этот код вместо этого
@api_view(['POST'])
def SaveUserResponse(request):
if request.method == 'POST':
Qstans = ""
for ran in request.data:
qid = ran.get('QId')
answer = ran.get('Answer')
Qstans = Qstans + str(qid)+'|'+ answer+'&&'
print(Qstans)
обратите внимание, что print(Qstans) находится вне цикла