Jak seřadit slovník podle klíče a hodnoty v Pythonu?

Duben 2, 2020 – 4 minuty čtení

Ahoj všem. Dnes vám dám krátké tipy na třídění slovníků v Pythonu (Python3). Jak všichni víme, slovníky jsou ze své podstaty neuspořádané, ale jiné typy, například seznamy a tuply, ne. Slovník není možné setřídit, ale můžeme vytvořit reprezentaci slovníku, která je setříděná. Potřebujete tedy uspořádaný datový typ pro reprezentaci setříděných klíčů nebo hodnot, což bude seznam – pravděpodobně seznam tuplů.

Slovník v jazyce Python (zdroj)

.

Proces řazení slovníků

Jak vidíme na prvním obrázku, slovníky v Pythonu jsou množinou klíčů-.hodnot, kde každá dvojice klíč-hodnota se nazývá položka. Nyní se zaměřme na hlavní problém: Slovníky lze řadit podle klíčů nebo hodnot. Jak je vymezeno na druhém obrázku, můžeme třídit keys(), values() a items() slovníku. Zaměřme se nejprve na třídění podle values().

třídění slovníku podle hodnoty

Mějme slovník složený z několika renomovaných organizací jako keys() a jejich rok založení jako values(). Chceme tedy mít setříděný slovník, kde nejstarší položky organizace budou prvním prvkem a nejmladší organizace posledním.

d = {"Apple": 1976, "Microsoft":1975, "Facebook":2004, "Sony":1946, "IBM":1911, "Amazon": 1994 }

Jak vidíme ve slovníku d, IBM je nejstarší organizací, proto bude prvním klíčem setříděného slovníku a Facebook bude poslední.

print(sorted(d.items(), key = lambda kv:kv))
print(sorted(d.items(), key = lambda kv:kv, reverse = True))
print(dict(sorted(d.items(), key = lambda kv:kv)))
sort_d = dict(sorted(d.items(), key = lambda kv:kv))
print(sort_d)

Výstup:



{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}
{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}

Protože třídíme d.items(), což je seznam tuplů, kde keys()jsou prvním parametrem a values() jsou druhým parametrem každého tuplu. Pro třídění seznamu tuplů jsme jako klíč zvolili hodnoty, tj. druhý parametr každého tuplu. V prvním řádku je klíč definován jako lambdafunkce, kde hodnota klíče je druhým parametrem položek. Toto třídění vytvoří seznam setříděných tuplů. můžeme z něj prostě udělat slovník pomocí funkce dict(), jak ukazuje třetí řádek kódu. Třídění můžeme také obrátit, což ve výsledku vytvoří seznam tuplů s nejnovějším na prvním místě a nejstarší bude poslední položka, jak je uvedeno na druhém řádku kódu. Seřazený slovník můžeme také uložit pod jiným názvem, jak je uvedeno výše.

třídění slovníku podle klíče

print(sorted(d.items()))
print(dict(sorted(d.items())))
print(dict(sorted(d.items(), key = lambda kv:kv)))
print(sorted(d.items(), reverse = True))

Výstup:


{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}
{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}

Jak víme, keys() zde ve slovníku d jsou řetězce, pak seřazení podle klíče vytvoří seznam tuplů v abecedním pořadí v keys() jednotlivých položek a pomocí funkce dict() se vytvoří slovník. můžeme také použít funkci lambda pro definici klíče, což je téměř zbytečné, jen jsem ukázal, aby se provedlo srovnání při definici klíče při třídění.

To je vše. Navštivte prosím můj profil a získejte další příběhy o strojovém učení a analýze dat. Jakékoli návrhy a kritiku velmi ocením. Zde jsou mé předchozí příběhy založené na postgraduálním kurzu nabízeném Inha University, Rep of Korea:

Předchozí příběhy:

Část-1: Základy Pythonu a instalace
Část-2: Kapitola-2: Datová struktura Pythonu – datový typ
Část-3: Řídicí příkazy (smyčky) v Pythonu
Část:4: Datová struktura Pythonu – datový typ
Část-3: Řídicí příkazy (smyčky) v Pythonu: Funkce v jazyce Python&Moduly
Část:5: Objektově orientované programování v jazyce Python – Schafer & DataCamp.
Část-6: Typy & postupu strojového učení
Část-7: Feature Engineering pro strojové učení

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.