Similar presentations:
Сөздіктер. Кәдімгі тізімдер (массивтер)
1. Сөздіктер
2.
• Кәдімгі тізімдер (массивтер) нөмірленгенэлементтердің жиыннын білдіреді, яғни тізімнің
қандай да бір элементіне жүгіну үшін оның
нөмірін көрсету қажет. Тізімдегі элемент нөмірі
элементтің өзін бірдей анықтайды. Бірақ сандық
нөмірлер бойынша деректерді анықтау әрқашан
ыңғайлы емес.
• Мысалы, поездардың маршруттары, авиарейстер
сандық-әріптік кодпен (сан және бір әріп)
сәйкестендіріледі, яғни поездардың немесе
ұшақтардың рейстері туралы ақпаратты сақтау
үшін идентификатор ретінде сан емес, мәтіндік
жолды пайдалану ыңғайлы болар еді.
3.
• Деректер құрылымының элементтерінсандық индекс бойынша емес, еркін түрде
сәйкестендіруге мүмкіндік беретін
деректер құрылымы сөздік немесе
ассоциативті массив деп аталады. Pyton
тіліндегі деректердің тиісті құрылымы dict
деп аталады.
4.
• Сөздікті пайдаланудың қарапайым үлгісінқарастырайық.
• Capitals сөздігін құрайық, онда индекс
елдің атауы, ал мәні-осы елдің
астанасының атауы болып табылады.
• Бұл елдің астанасын елдің атауы бар жол
арқылы оңай анықтауға мүмкіндік береді.
5.
# бос сөздік құрастырамыз Capitals
Capitals = dict()
# оны деректермен толтырамыз
Capitals['Russia'] = 'Moscow'
Capitals['Ukraine'] = 'Kiev'
Capitals['USA'] = 'Washington'
Countries = ['Russia', 'France', 'USA', 'Russia']
for country in Countries:
# сөздікте тексеру орындаймыз Capitals
if country in Capitals:
print('Столица страны ' + country + ': ' + Capitals[country])
else:
print('В базе нет страны c названием ' + country)
6.
Столица страны Russia: Moscow
В базе нет страны c названием France
Столица страны USA: Washington
Столица страны Russia: Moscow
7.
• Сөздіктің әрбір элементі екі объектідентұрады: кілт және мән.
• Біздің мысалда кілт-елдің атауы, мәніастананың атауы.
• Кілт сөздік элементін анықтайды, мән осы
кілтке сәйкес келетін деректер болып
табылады.
• Кілттердің мәні-бірегей, яғни сөздікте
бірдей екі кілт болуы мүмкін емес.
8.
• Ассоциативті массивтің ерекшелігі оныңдинамикалығы болып табылады: оған еркін
кілттері бар жаңа элементтерді қосуға және
онан бұрыннан бар элементтерді жоюға
болады. Бұл ретте қолданылатын жады
көлемі қауымдасқан массив мөлшеріне
пропорционалды. Ассоциативті массив
элементтеріне қол жеткізу әдеттегі
массивтерге қарағанда баяу болса да, жалпы
жылдам орындалады.
9.
• Питон тілінде кілт кез-келген еркінөзгермейтін деректер түрі бола алады: бүтін
және нақты сандар, жолдар, кортеждер.
• Сөздіктегі кілт ретінде жиынды қолдана
алмаймыз, бірақ frozenset типті элемент
болуы мүмкін: құрылғаннан кейін өзгертуге
болмайтын set типті болып табылатын
арнайы деректер түрі.
• Сөздік элементінің мәні кез келген деректер
түрі бола алады.
10. Сөздік құру
• Бос сөздікті dict() немесе {} фигуралықжақшалардың бос жұптары арқылы
құруға болады (сондықтан фигуралық
жақшаларды бос жиын құру үшін
қолдануға болмайды). Кейбір бастапқы
мәндер жинағы бар сөздікті құру үшін
келесі конструкцияларды пайдалануға
болады:
11.
Capitals = {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'}
Capitals = dict(Russia = 'Moscow', Ukraine = 'Kiev', USA = 'Washington')
Capitals = dict([("Russia", "Moscow"), ("Ukraine", "Kiev"), ("USA", "Washington")])
Capitals = dict(zip(["Russia", "Ukraine", "USA"], ["Moscow", "Kiev",
"Washington"]))
print(Capitals)
{'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'}
12.
• Алғашқы екі жол шағын сөздіктерді құруға қолданылады.Онда олардың барлық элементтерін тізіп қолдануға болады.
Сонымен қатар, екінші тәсілде кілттер dict функциясының
атаулы параметрлері ретінде беріледі, сондықтан бұл
жағдайда кілттер тек жолдар ғана болуы мүмкін, және де
дұрыс идентификаторлар ретінде берілуі тиіс.
• Үшінші және төртінші жағдайда, аргументтер ретінде дайын
тізімдерді беріп, үлкен сөздіктер құруға болады.
• Үшінші жолдағы dict функциясының әрбір элементі екі
элементтен тұратын кортеж болып табылатын тізім: кілт және
мән.
• Төртінші әдіс zip функциясы қолданылады, онда екі бірдей
ұзындықтағы тізім беріледі: кілттер тізімі және мәндер тізімі.
13.
• Сөздікте жұптардың тәртібі маңызды емесболғандықтан, интерпретатор оларды
ыңғайлы етіп шығарады.
• Егер индекстеу мүмкін болмаса, белгілі
бір элементті қалай қолдануға болады?
• Сөздікте мәндерге қол жеткізу кілттер
бойынша жүзеге асырылады, олар
квадрат жақшаларға (тізім индексімен
ұқсас) арқылы алынады:
14.
• {'cat': 'мысық', 'dog':' ит', 'bird': 'құс', 'mouse': 'тышқан'}• >>> a = {'cat': 'мысық', 'dog': 'ит', 'bird':' құс', 'mouse':
'тышқан'}
• >>> a
• {'dog':' ит', 'cat': 'мысық', 'bird': 'құс', 'mouse':
'тышқан'}
• >>> a ['cat']
• 'мысық'
• >>> a ['bird']
• 'құс'
15.
• Сөздіктер, тізімдер сияқты, өзгертілетіндеректер түрі болып табылады: элементтерді
өзгертуге, қосуға және жоюға мүмкіндік
беріледі ("кілт:мән"жұбы).
• Бастапқыда сөздікті бос құруға болады
(мысалы, D = {}) және оны элементтермен
толтыра аламыз.
• Элементті қосу және өзгертудің синтаксисі
бірдей: сөздік [кілт] = мәні.
• Элементті жою Python тілінің del кіріктірілген
операторы арқылы жүзеге асырылады.
16.
>>> a ['elephant'] = 'бегемот' # қосу
>>> a ['table'] = 'үстел' # қосу
>>> a
{'dog':' ит', 'cat': 'мысық', 'mouse': 'тышқан', 'bird':'
құс', 'table':' үстел', 'elephant': 'бегемот'}
>>> a
['elephant'] = 'піл' # өзгертеміз
>>>del a ['table'] # жою
>>> a
{'dog':' ит', 'cat': 'мысық', 'mouse': 'тышқан', 'bird':
'құс', 'elephant': 'піл'}
17.
• Сөздікте бірдей кілттері бар екі элемент болуымүмкін емес. Дегенмен, әртүрлі кілттердің бірдей
мәндері болуы мүмкін.
• Кілт кез келген өзгермейтін деректер түрі бола
алады.
• Мәні-деректердің кез келген түрі.
• Сөздіктердің мәндері басқа сөздіктер немесе
тізімдер сияқты құрылымдар болуы мүмкін.
• >>> nums = {1: 'one', 2: 'two', 3: 'three'}
• > > > person = {'name': 'Tom', 1: [30, 15, 16], 2: 2.34,
('ab', 100): 'жоқ'}
18. For циклында сөздік элементтерін алу
Сөздіктің элементтері for циклында, басқа күрделінысандардың элементтері сияқты алынады. Дегенмен,
үнсіз келісім бойынша тек кілттер алынады:
>>> nums
{1: 'one', 2: 'two', 3: 'three'}
>>> for i in nums:
... print(i)
...
1
2
3
19.
Бірақ кілттер бойынша мәндерді алуғаболады:
>>> for i in nums:
... print(nums[i])
...
one
two
three
20.
• Екінші жағынан, сөздікте кортеждердентұратын ерекше құрылым жасайтын
• items () әдісі бар. Әрбір кортеж кілт пен
мәнді қамтиды:
>>> n = nums.items()
>>> n
dict_items([(1, 'one'), (2, 'two'), (3, 'three')])
21.
For циклінде кортеждерді ашуға болады,осылайша кілтті де, оның мәнін де бірден алуға
болады:
>>> for key, value in nums.items():
... print(key, 'is', value)
...
1 is one
2 is two
3 is three
22.
• Сөздіктің кeys() және values()әдістері бөлек кілттермен мәндер тізімін алуға мүмкіндік береді.
Мәселен, егер, мысалы, мәндерді немесе
кілттерді ғана таңдау керек болса, осы әдістердің
біреуін пайдалану жақсы:
>>> v_nums = []
>>> for v in nums.values():
... v_nums.append(v)
...
>>> v_nums
['one', 'two', 'three']
23. Сөздік әдістері
• Жоғарыда қарастырылған items (), keys() және values ()әдістерінен басқа сөздіктерінің тағы бірнеше әдістері
бар.
• Бұл әдістер clear(), copy(), fromkeys(), get(), pop(),
popitem(), setdefault(), update().
• сlear әдісі () сөздіктің барлық элементтерін жояды,
бірақ сөздік жойылмайды. Нәтижесінде бос сөздік
пайда болады:
>>> a
{'dog': 'собака', 'cat': 'кошка', 'mouse': 'мышь', 'bird':
'птица', 'elephant': 'слон'}
>>> a.clear()
>>> a
{}
24.
• Сөздік-бұл өзгермелі деректер түрі. Демек, тізімсияқты ол сілтеме бойынша функцияға берілуі
мүмкін. Сондықтан, кейде сөздіктің түпнұсқасы
сақталуы үшін оның көшірмесін алады.
>>> nums2 = nums.copy()
>>> nums2[4] = 'four'
>>> nums
{1: 'one', 2: 'two', 3: 'three'}
>>> nums2
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
25.
• fromkeys() әдісі элементтері кілттер болатын тізімненсөздікті жасауға мүмкіндік береді. Әдісті dict класына
да, оның объектілеріне да қолдануға болады:
>>> a = [1, 2, 3]
>>> c = dict.fromkeys(a)
>>> c
{1: None, 2: None, 3: None}
>>> d = dict.fromkeys(a, 10)
>>> d
{1: 10, 2: 10, 3: 10}
>>> c
{1: None, 2: None, 3: None}
26.
• get() әдісі () элементті оның кілті бойынша алуға мүмкіндік береді:>>> nums.get(1)
'one'
• рop () әдісі сөздіктен элементті көрсетілген кілт бойынша жояды
және жойылған жұптың мәнін қайтарады. рopitem әдісі()
аргументтерді қабылдамайды, еркін элементті жояды және
қайтарады.
>>> nums.pop(1)
'one'
>>> nums
{2: 'two', 3: 'three'}
>>> nums.popitem()
(2, 'two')
>>> nums
{3: 'three'}
27.
• setdefault() көмегімен элементті сөздікке қосуға болады:> > > nums.setdefault мәні (4, " төрт")
"төрт"
> > > nums
{3:' үш', 4: 'төрт'}
• nums[4] = 'four', егер 4 кілті сөздікте болмаса, тең. Егер ол бар
болса, онда nums[4] = 'four' ескі мәнді қайта жазады,
setdefault() – жоқ.
• Update() көмегімен басқа сөздікке қосуға болады:
> > > nums.update({6: 'six', 7: 'seven'})
> > > nums {3: 'three', 4: 'four', 6: 'six', 7: 'seven'}