Sortowanie „słownika” po kluczach i po wartościach

Zadanie 11 z 15 · rozdział 17Trudność: 1 z 3sortdict

Treść zadania

Wczytaj n par klucz wartość do słownika.

a) Wypisz pary posortowane rosnąco według kluczy.

b) Wypisz pary posortowane rosnąco według wartości; pary o równych wartościach uporządkuj rosnąco według kluczy.

Dane wejściowe

  • 1. linia: n
  • następnie n linii: klucz wartość — klucz to słowo z małych liter (klucze są różne), wartość to liczba całkowita

Dane wyjściowe

  • 1. linia: pary dla a)
  • 2. linia: pary dla b)

Każdą parę wypisz jako klucz:wartość (bez spacji wokół dwukropka), a pary oddziel pojedynczą spacją.

Ograniczenia

  • 1 ≤ n ≤ 50

Uwagi

  • Klucze porównujemy jak napisy (alfabetycznie), np. ab jest przed b.
  • sorted(slownik.items()) sortuje pary według kluczy — pary (krotki) porównywane są najpierw po pierwszym elemencie.
  • Aby sortować według czegoś innego, przekaż w parametrze key nazwę funkcji (bez nawiasów). sorted wywoła tę funkcję dla każdego elementu i ułoży elementy rosnąco według zwróconych wartości:
    ```python
    def dlugosc_napisu(napis):
    return len(napis)
    print(sorted(["kot", "żyrafa", "pies"], key=dlugosc_napisu)) # ['kot', 'pies', 'żyrafa']
    `
  • Funkcja klucza może zwracać krotkę. Krotki porównywane są element po elemencie, więc dla pary (klucz, wartość) zwrócenie (wartość, klucz) sortuje po wartości, a przy równych wartościach — po kluczu.

Przykład

Wejście
4
c 3
x 5
a -2
b 4
Wyjście
a:-2 b:4 c:3 x:5
a:-2 c:3 b:4 x:5

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 17

Zadania w tym rozdziale ćwiczą pracę ze słownikami (dict): tworzenie, dodawanie i usuwanie par, zliczanie wystąpień oraz grupowanie danych według klucza.
Każde zadanie (oraz każdy podpunkt) jest osobnym, niezależnym programem: czyta standardowe wejście (stdin) i wypisuje wynik na standardowe wyjście (stdout).

Konwencje wspólne:

  • Dane wczytuj dokładnie w kolejności podanej w sekcji Wejście; jeśli w jednej linii jest kilka wartości — rozbij ją po spacjach.
  • Jeśli wynikiem jest słownik, wypisz go tak, jak robi to print(slownik) w Pythonie: {klucz: wartość, klucz: wartość} — pary oddzielone przecinkiem i spacją, po dwukropku spacja, klucze i wartości napisowe w apostrofach (np. {'ala': 2, 'ma': 1}), liczby bez apostrofów (np. {1: 1, 2: 4}), pusty słownik to {}.
  • Kolejność par w wypisanym słowniku to kolejność, w jakiej klucze były do niego dodawane (tak zachowuje się słownik w Pythonie).
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
3
b 2
a 3
c 1
Oczekiwane wyjście
a:3 b:2 c:1
c:1 b:2 a:3

Test 2

Nie uruchomiono
Wejście
3
c 10
b 5
a 7
Oczekiwane wyjście
a:7 b:5 c:10
b:5 a:7 c:10

Test 3

Nie uruchomiono
Wejście
1
z 0
Oczekiwane wyjście
z:0
z:0

Test 4

Nie uruchomiono
Wejście
4
d 1
b 1
c 0
a 1
Oczekiwane wyjście
a:1 b:1 c:0 d:1
c:0 a:1 b:1 d:1

Test 5

Nie uruchomiono
Wejście
3
b 2
ab 5
ba -2
Oczekiwane wyjście
ab:5 b:2 ba:-2
ba:-2 b:2 ab:5

Test 6

Nie uruchomiono
Wejście
5
kiwi 30
banan 12
jablko 30
gruszka -4
ananas 12
Oczekiwane wyjście
ananas:12 banan:12 gruszka:-4 jablko:30 kiwi:30
gruszka:-4 ananas:12 banan:12 jablko:30 kiwi:30
Uruchom z własnymi danymi