Как я могу организовать словарь в форме полумесяца из другого словаря

#python

Вопрос:

Я хочу напечатать двс из числа «стульев» в этом:

 '{'VARANDA': [{'tables': [0], 'chairs': 20, 'free': 1}, {'tables': [0, 0, 0, 0, 0], 'chairs': 4}, {'tables': [0], 'chairs': 6}]}'
 

когда я распечатаю это, оно должно вернуться:

 VARANDA:
 5 tables de 4 chairs.
 1 tables de 6 chairs.
 1 tables de 20 chairs.
 

но он возвращается:

 VARANDA:
 1 tables de 20 chairs.
 5 tables de 4 chairs.
 1 tables de 6 chairs.
 

я использую цикл for для печати:

 for area in sorted(dicCopy):
            print(f'{area}:')
            for i in dicCopy[area]:
                print(f' {len(i["tables"])} tables de {i["chairs"]} chairs.')
 

как я могу распечатать это из числа стульев в виде полумесяца?

Ответ №1:

Используйте key для пользовательской сортировки ваших значений (я использовал здесь количество стульев) :

 d = {'VARANDA': [{'tables': [0], 'chairs': 20, 'free': 1}, {'tables': [0, 0, 0, 0, 0], 'chairs': 4}, {'tables': [0], 'chairs': 6}]}

for area, lst in d.items():
    print(f'{area}:')
    for d2 in sorted(lst, key=lambda x: x['chairs']):
         print(f' {len(d2["tables"])} tables de {d2["chairs"]} chairs.')
 

выход:

 VARANDA:
 5 tables de 4 chairs.
 1 tables de 6 chairs.
 1 tables de 20 chairs.