Member 14928977 Ответов: 1

Как сортировать вложенные кортежи.


Напишите программу python для определения кортежа чтобы принять 3 детали пищевых продуктов такие как название продуктов с их ценой и сроком годности в суб кортеж затем,расположите кортеж элементов кортежа на основе их цены в порядке возрастания.
I should not use lambda or sorted function, i can use bubble sort,insertion sort and selection sort

def sort(lst):
для i в диапазоне(0,len(lst)):
для j в диапазоне(0,len(lst)-i-1):
если lst[j][0]<lst[j+1][0]:
ключ="lst[j]
"lst[j]="lst[j+1]
"lst[j+1]="ключ
возвращение" кортеж(ЛСТ)
lst="список(t)
сортировка(lst)

<b">То, что я пробовал:

читайте выше пожалуйста
t=('торт', (748.0, '08-09-2020'), 'желе', (12.0, '08-09-2020'), 'сливки', (244.0, '03-11-2020'))

1 Ответов

Рейтинг:
4

Sandeep Mewara

Используя сортировку пузырьков, это будет что-то вроде:

def sortTuple(t):  
    for i in range(0, len(t)):  
        for j in range(0, len(t)-i-1):  
            if (t[j][1] > t[j + 1][1]):  #notice here, I have used index 1 to use price as the value
                temp = t[j]  
                t[j]= t[j + 1]  
                t[j + 1]= temp  
    return t  
   
ex = [('apple', 10, '1/1/2021'), ('banana', 5,'1/1/2021'), ('mango', 20,'1/1/2021')] 
print(sortTuple(ex))

Output : [('banana', 5,'1/1/2021'), ('apple', 10, '1/1/2021'), ('mango', 20,'1/1/2021')]
Итак, все, что вам нужно, это:
1. извлеките ценовые данные из кортежа
2. Используйте эти данные в простом алгоритме пузырьковой сортировки

Подробнее о кортежах: Python - Кортежи - Tutorialspoint[^]


CPallini

5.

Member 14928977

но цена и дата запроса это суб кортеж

Sandeep Mewara

def sortTuple(t):  
    for i in range(0, len(t)):  
        for j in range(0, len(t)-i-1):  
            if (t[j][1] > t[j + 1][1]):  #notice here, I have used index 1 to get sub tuple
                # print(t[j][1][0]) if you explicitly need to work with price
                # subtuples with price first is good enough in itself for comparison - they will sort properly
                temp = t[j]  
                t[j]= t[j + 1]  
                t[j + 1]= temp  
    return t  
   
ex = [('apple', (10, '10/1/2021')), ('banana', (5,'5/1/2024')), ('mango', (20,'1/1/2021'))] 
print(sortTuple(ex))

Sandeep Mewara

Ты должен попытаться. Попробуйте и играйте, чтобы узнать и посмотреть, как это работает.

Member 14928977

СПАСИБО, ЭТО СРАБОТАЛО