Мақсаты: күрделі деректер құрылымымен жұмыс істеуді үйрену - сөздіктер: жасау, өңдеу, сүзу, сұрау бойынша деректерді таңдау.
Қысқаша теориялық мәлімет
Жай тізімдер (массивтер) - нөмірленген элементтер жиынтығы, яғни тізімнің кез келген элементіне сілтеме жасау үшін оның нөмірін көрсету керек. Тізімдегі элемент нөмірі элементінің өзін анықтайды. Бірақ деректерді сандық нөмірлер бойынша анықтау әрдайым ыңғайлы емес. Мысалы, Ресейде бағыттар бойынша пойыздар рейстерді анықталған сандық-хат коды (нөмірі және бір нөмірі), және сан-хат коды анықталған, бұл мәтіндік жол ретінде сандарды қолдануға болмайды еді ыңғайлы идентификатор ретінде рейстер поездарда немесе ұшақтар туралы ақпаратты сақтау болып табылады.
Деректер құрылымы, оның элементтерін сандық индекс бойынша емес, еркін индексі арқылы анықтауға мүмкіндік береді, ол сөздік немесе қауымдастық массив деп аталады. Python деректерінің құрылымы dict деп аталады.
1. Сөздікті пайдаланудың қарапайым мысалын қарастырайық. Біз астананың сөздіктерін бастайық, онда индекс елдің аты болып табылады және мағынасы - осы ел астанасының атауы. Бұл ел атымен астанасы бар желімен анықтауға мүмкіндік береді.
Мысал 1.
# Capitals атты сөздік құрайық
Capitals = dict()
Capitals['Russia'] = 'Moscow'
Capitals['Ukraine'] = 'Kiev'
Capitals['USA'] = 'Washington'
Countries = ['Russia', 'France', 'USA', 'Russia']
for country in Countries:
if country in Capitals:
print(Ел астанасы ' + country + ': ' + Capitals[country])
else:
print(Дерекқорда бұл ел жоқ ' + country)
Осылайша, сөздің әрбір элементі екі нысаннан тұрады: кілт және мән. Біздің мысалда кілт - елдің аты, мағынасы - астананың атауы. Кілт сөздік элементін анықтайды, мән - бұл кілтке сәйкес келетін деректер. Негізгі мәндер бірегей, сөздікте екі бірдей кілттер болмайды.
Мұндай әдеттегі қағаз сөздіктер (біртілді, емле, тіл) ретінде өмір таралған сөздіктер, жылы. Онда кілт - мақаланың сөздік тақырыбы және құндылығы мақаланың өзі. Мақалаға қол жеткізу үшін сөздік кілтін көрсету керек.
Деректер құрылымы ретінде сөздіктің тағы бір мысалы - телефон анықтамалығы. Онда кілт аты болып табылады, ал мағынасы - телефон нөмірі. Ал сөздіктер, және телефон анықтамалығы ол белгілі негізгі лексиканы (жазбалар кілттер әліпбилік ретпен сақталады, егер, мысалы, сіз оңай мысалы сондай-ақ белгілі пернесін, екілік іздеу таба аласыз) элементін табу оңай, сондықтан сақталады, бірақ тек құнына белгілі болса neizvestven кілті, берілген мәнімен іздеу элемент сөздіктің барлық дәйекті сканерлеу элементтері талап етуі мүмкін.
Ассоциативті массивтің ерекшелігі оның динамизмі: ол еркін кілттермен жаңа элементтерді қосып, бар элементтерді жоя алады. Қолданылатын жадтың өлшемі ассоциативті массаның өлшеміне пропорционалды. Ассоциативті алаптың элементтеріне қатынау қарапайым массивтерден гөрі баяу болса да, бірақ тұтастай алғанда тезірек орындалады.
Python тілінде кілт еркін өзгермейтін деректер түрі болуы мүмкін: бүтін сандар және нақты сандар, жолдар, қапсырмалар. Сөздікдегі кілт жиынтық бола алмайды, бірақ ол frozenset түрінің элементі бола алады: құрастырылғаннан кейін өзгертілмейтін түрдегі жиынтықтың аналогы болып табылатын арнайы деректер түрі. Сөздік элементінің мәні айнымалы қоса алғанда, кез келген деректер түрі болуы мүмкін.
1. Сөздіктерді қашан қолдану керек?
Сөздіктер келесі жағдайларда пайдаланылуы керек:
• Объектілер санын есептеу. Бұл жағдайда сізде сөздердің болуы керек, онда кілттер нысан болып табылады, ал мәндер - олардың саны.
• Объектіге қатысты кез-келген деректерді сақтау. Кілттер - нысандар, мәндер олармен байланысты деректер. Мысалы, айдың атауымен оның сериялық нөмірін анықтағыңыз келсе, оны Num ['January'] = 1 сөздік арқылы орындауға болады; Сан ['ақпан'] = 2; ....
• Нысандар арасында сәйкестікті орнатыңыз (мысалы, «ата-бала»). Кілт объект болып табылады, мән оған сәйкес келетін нысан.
• Егер сізге тұрақты жиым қажет болса, бірақ элемент индексінің ең үлкен мәні өте үлкен, бірақ мүмкін индекстерді («сирек массив» деп аталатын) емес, жадты сақтау үшін ассоциативті жиынды қолдануға болады.
1. Сөздік жасау
Бос сөздік dict () функциясымен немесе бос жақшалармен {} (осы себепті бұйра жақшалар бос жиынтығын жасау үшін пайдаланыла алмайды) көмегімен жасалуы мүмкін. Бастапқы мәндердің кейбір жиынтығымен сөздікті жасау үшін келесі конструкцияларды пайдалануға болады:
Мысал 2.
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)
Алғашқы екі әдіс тек шағын сөздіктерді жасау үшін пайдаланылуы мүмкін, олардың барлық элементтері. параметрлері атындағы функцияларды араласу сияқты Сонымен қатар, екінші әдісі, кілттер беріледі, сондықтан бұл жағдайда, кілттер ғана идентификаторлары дұрыс, онда жолдары, болуы мүмкін. Үшінші және төртінші оқиғасы дәлелдер алуға болады дайын тізімдер өтуге, егер сіз, үлкен сөздіктер жасауға болады міндетті барлық элементтерін тасымалдауға және бағдарламасын орындау барысында салынған кез келген басқа құралы болып табылады. негізгі және мәні: берілетін үшінші әдісі DICT функциясы тізімінде әр элементі екі элементтерінің кортеж болып табылады. пернелер тізімі мен құндылықтардың тізімі: төртінші әдісі екі тең ұзындығы тізімін алады funktsiyazip пайдаланады.
1. Сөздік элементтерімен жұмыс істеу
Негізгі операция: кілттің көмегімен элементтің мәнін алу тізімдерге ұқсас: A [key]. Егер көрсетілген кілтдегі элемент сөздікте болмаса, KeyError ерекше жағдай орын алады.
Кілт бойынша мәнді анықтаудың тағы бір жолы - алу әдісі:
A.get (кілт)
Егер алу кілтімен элемент сөздікте болмаса, онда Жоқ мәні қайтарылады. емес сөздікте негізгі элементі негізгі, егер екі дәлелдер A.get (негізгі, Val) әдісімен белгілер мән Val қайтарады.
Сіз операцияларда емес, сондай-ақ жиынтықтардағы сөздіктің мүшелігін тексере аласыз.
Сөздікке жаңа элемент қосу үшін, оны кейбір мәнді тағайындаңыз: A [перне] = мән.
Элементті сөздіктен жою үшін, әрекетті пайдалануыңызға болады
Мұндай негізгі сөздікте болмаса, егер дель (A [негізгі] операция, ерекше KeyError көтереді. сөздіктен элементін жою үшін Мұнда екі қауіпсіз әдісін.
3-мысал.A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'}
key = 'ac'
if key in A:
del A[key]
try:
del A[key]
except KeyError:
print('There is no element with key "' + key + '" in dict')
print(A)
Бірінші жағдайда, біз алдымен элементтің болуын тексереміз, ал екінші жағдайда біз қоспаны өңдейміз және өңдейміз.
Сөздіктен элементті жоюдың тағы бір жолы - pop әдісі: A.pop (keyy). Бұл әдіс, егер осы пернемен элемент сөздікте болмаса, алып тасталатын элементтің мәнін қайтарады, ерекшелік тасталады. Егер екінші әдіс поп әдісіне берілсе, онда элемент сөздікте болмаса, pop әдісі осы параметрдің мәнін қайтарады. Бұл сөздіктен элементті қауіпсіз шығарып алудың ең оңай жолы: A.pop (кілт, жоқ).
1. Сөздік элементтерін іздеу
Сөздіктегі барлық элементтердің кілттерін іздеуді ұйымдастыру оңай:
4-мысал.
A = dict(zip('abcdef', list(range(6))))
for key in A:
print(key, A[key])
Келесі әдістер сөздік элементтерінің көріністерін қайтарады. Өкілдер көптеген жолдармен ұқсас, бірақ олар сөздік элементтерінің мәндерін өзгерткен кезде өзгереді. Кілттер әдісі барлық элементтердің кілттерінің көрінісін қайтарады, мәндер әдісі барлық мәндердің көрсетілуін қайтарады және элементтер әдісі кілттер мен мәндердің барлық жұбының (түймелерінің) көрінісін қайтарады.
Тиісінше, сөздік A элементінің барлық мәндерінің арасында VAL мәндерінің төмендегіні тексеруге болады: valval in A.values () және айнымалы мәнді айнымалы айнымалы элементтің кілті бар және val айнымалы мәнінде оның мәні болуы мүмкін:
Мысал 5.
A = dict(zip('abcdef', list(range(6))))
for key, val in A.items():
print(key, val)
Достарыңызбен бөлісу: |