Member 13969384 Ответов: 2

Python 4 для циклов вызывающих повторяющийся вывод


Привет команда, у меня есть этот фрагмент python, в котором он содержит 4 цикла for, которые содержат дикт, и вывод является повторяющимся, любезно запрашивая помощь для вывода только уникальных данных. ниже приведен фрагмент, который я очень ценю за вашу помощь. заранее спасибо
for A_R_Tokens in Request_Token_List:
    for A_Account_No in V_Account_Payment_Phone_list[0]:
        for A_Payer_ID in V_PayerID_ProductID_list[0]:
            for A_Product_ID in V_PayerID_ProductID_list[1]:
                data = {
                '__RequestVerificationToken': A_R_Tokens,
                'PayerId-input': A_Account_No,
                'PayerId': A_Payer_ID,
                'ProductId': A_Product_ID,
                'QueueItemId': '',
                'Comment': ''
                }

При его запуске я получаю повторяющийся вывод
и при запуске кода вот что я получаю
{'__RequestVerificationToken': 'se', 'PayerId-input': '31955948', 'PayerId': '1c17da55-a8bb-ea11-a9a9-', 'ProductId': '1e17da55-a8bb-ea11-a9a9-000d3a298bc6', 'QueueItemId': '', 'Comment': ''}
{'__RequestVerificationToken': 'se', 'PayerId-input': '31955948', 'PayerId': '1c17da55-a8bb-ea11-a9a9-', 'ProductId': 'dc0525fd-3bbe-e711-a952-000d3a26b1fe', 'QueueItemId': '', 'Comment': ''}
{'__RequestVerificationToken': 'se', 'PayerId-input': '31955948', 'PayerId': 'da0525fd-3bbe-e711-a952-000d3a26b1fe', 'ProductId': '1e17da55-a8bb-ea11-a9a9-000d3a298bc6', 'QueueItemId': '', 'Comment': ''}

и выход, который я хочу, это
{'__RequestVerificationToken': 'se', 'PayerId-input': '31955948', 'PayerId': '1c17da55-a8bb-ea11-a9a9-', 'ProductId': '1e17da55-a8bb-ea11-a9a9-000d3a298bc6', 'QueueItemId': '', 'Comment': ''}

Я буду очень признателен Вам за любую помощь

Что я уже пробовал:

Я пробовал наборы, которые не работали, потому что словари не могут быть хэш-способными

2 Ответов

Рейтинг:
18

Afzaal Ahmad Zeeshan

Я не понимаю цели этих 4 циклов; особенно если вы не собираетесь использовать переменную из предыдущего цикла в качестве списка для итерации.

for A_R_Tokens in Request_Token_List:
    for A_Account_No in V_Account_Payment_Phone_list[0]:
        for A_Payer_ID in V_PayerID_ProductID_list[0]:
            for A_Product_ID in V_PayerID_ProductID_list[1]:
Зачем вообще писать остальные три слоя цикла, когда:

1. Вы не собираетесь повторять на каждом уровне, зависящем от предыдущего слоя?
1. Вы можете легко получить доступ к элементам с помощью этих индексаторов (например, V_Account_Payment_Phone_list[0]).

Эта прямая индексация является причиной того, что в каждом цикле вы получаете одни и те же (дублированные) результаты. Можете ли вы поделиться целью, стоящей за циклом/алгоритмом?

Тем не менее, уменьшите общее количество циклов здесь, сложность вашей программы составляет O(N4) в зависимости от того, сколько элементов находится в каждом списке.


Рейтинг:
0

Member 13969384

Спасибо Ахмад, Я действительно ценю вашу помощь, проблема в том, что эти списки, которые я перебираю, не из одной и той же функции, они из разных функций, и это функция, с помощью которой мне нужно перебирать элементы в списках и публиковать их.