14.4. Скупови и речници¶
Скупови¶
Ако знамо имена свих фудбалера који су давали голове током једне ревијалне утакмице, и то редом како су давали голове, можемо једноставно одредити скуп свих фудбалера који су се уписали на листу стрелаца. Наиме, ако формирамо скуп на основу имена стрелаца, аутоматски ће бити уклоњени дупликати.
Скуп дефинишемо тако што између витичастих заграда (заграда {
и
}
) наводимо елементе раздвојене зарезима. Елементи скупа у овом
примеру су биле ниске, а можемо разматрати и скупове елемената другог
типа (на пример, скупове бројева).
Скуп од торке/листе/ниске¶
Ако су елементи скупа чланови неке торке или листе, можемо лако добити
скуп свих елемената (коришћењем функције set
, што у преводу са енглеског језика значи скуп),
као у следећем програму.
И од ниске можемо једноставно добити скуп карактера које она садржи
(опет помоћу функције set
).
Провера припадности скупу¶
Слично као и код осталих структура података, провера припадности скупу
може се извршити оператором in
. Покушај да то примениш у наредном
задатку.
Да ли је Миодраг награђен?¶
![](../_static/img/question-mark.png)
Познат је скуп награђених ученика. Напиши програм који проверава да ли је Миодраг освојио награду.
Скуповне операције¶
У језику Python можемо веома једноставно израчунати унију,
пресек и разлику скупова. Ако су A
и B
скупови, онда
је A | B
њихова унија, A & B
њихов пресек, а A - B
њихова
разлика. Провери да ли се сећаш ових операција из математике тако што
ћеш решити наредни тест.
-
Q-20: Ако је A = {3, 6, 7}, а B = {3, 4, 5}, повежи скуповне
операције са њиховим резултатима.
- A & B
- {3}
- A | B
- {3, 4, 5, 6, 7}
- A - B
- {6, 7}
- B - A
- {4, 5}
- (A - B) | (B - A)
- {4, 5, 6, 7}
Прикажимо како се скуповне операције могу употребити у решењу наредног задатка.
Девојчице које тренирају два спорта¶
![](../_static/img/question-mark.png)
Један скуп садржи девојчице из одељења које тренирају ритмичку гимнастику, а други оне које тренирају одбојку. Одреди скуп девојчица које тренирају оба спорта, скуп девојчица које тренирају бар један од њих и скуп девојчица које тренирају само одбојку.
Ако све урадиш како треба, добићеш решење
{'Milica', 'Jovana'}
{'Ana', 'Milica', 'Jovana', 'Gordana', 'Tara', 'Nađa', 'Aleksandra'}
{'Tara', 'Nađa', 'Aleksandra'}
Речници¶
Листе нам дају могућност да организујемо податке за које је познат неки редослед и у којима сваки податак има свој редни број (на пример, листу смо употребили да организујемо имена путника у авиону или податке о месецима у години) и приступ елементима листе врши се на основу њиховог индекса (редног броја, тј. позиције). Међутим, често подаци представљају неко пресликавање у којем на основу датог кључа желимо да приступимо вредности која је придружена том кључу. На пример, на основу шифре производа приступамо његовој цени, на основу ЈМБГ-а приступамо имену особе, на основу броја банковног рачуна приступамо салду (износу новца) на том рачуну, и слично. У тим ситуацијама, уместо листе, много је боље користити речнике (каже се и мапе или асоцијативне низове).
Дефинисање и коришћење речника¶
Цене аутомобила¶
![](../_static/img/question-mark.png)
Аутомобили у каталогу имају придружене цене и ми желимо да у нашем програму можемо да одредимо цену аутомобила на основу његовог модела. Напиши програм који на основу унетог модела аутомобила (ниска) одређује његову цену (цео број).
Кључна одлука за ефикасно решење овог задатка је да каталог цена аутомобила представимо помоћу речника.
Речнике дефинишемо унутар витичастих заграда {
и }
, где се сваки елемент
састоји од кључа и вредности међусобно одвојених двотачком (:
), док су елементи речника
међусобно одвојени зарезом.
Вредностима приступамо навођењем назива кључа у угластим заградама.
У претходном примеру модели аутомобила су кључеви који се пресликавају у цене аутомобила које су вредности. Кључеви су биле ниске, а вредности цели бројеви, што је чест случај.
Географске координате градова¶
У наредном примеру вредности у речнику су уређени парови.
![](../_static/img/question-mark.png)
Познате су географске координате неколико главних европских градова. За дато име града одреди његове географске координате. Одреди посебно географску дужину а посебно географску ширину.
Цена производа¶
Слично као и код осталих структура података и провера, оператором
in
се може проверити да ли је неком кључу у речнику придружена вредност.
![](../_static/img/question-mark.png)
У речнику се чувају цене различитих производа у продавници. Пронађи и испиши цену датог производа или пријави да се тај производ не продаје.